第八課-Channel Study For Caller Custom JAR Lib
1.下载 apache-maven
推荐3.6.3版本:https://maven.apache.org/download.cgi
设置系统环境变量:PATH

装好后在命令行验证:mvn -v

Maven中央仓库repo.maven.apache.org下载慢问题
编辑D:\java\apache-maven-3.6.3\conf目录下setting.xml文件,加入阿里云的源:
<mirrors>
	 <!-- 阿里云仓库 -->
	<mirror>
		<id>alimaven</id>
		<mirrorOf>central</mirrorOf>
		<name>aliyun maven</name>
		<url>https://maven.aliyun.com/nexus/content/repositories/central/</url>
	</mirror>
 
	<mirror>
		<id>nexus-aliyun</id>
		<mirrorOf>central</mirrorOf>
		<name>Nexus aliyun</name>
		<url>http://maven.aliyun.com/nexus/content/groups/public</url>
	</mirror>
  </mirrors>
2.安装微软开源的Vistual Studio Code IDE集成开发环境
下载URL地址:https://code.visualstudio.com/

3.安装微软官方支持的Azul OpenJDK11

4.安装vs code的Java开发相关插件
需要安装的有如下:
- Language Support for Java(TM) by Red Hat:通过 Eclipse JDT Language Server 提供 Java 语言支持
- Debugger for Java:基于 Java Debug Server 的轻量级调试工具。
- Java Test Runner:执行和调试 Java 测试用例。
- Maven for Java:Maven 插件。

5.创建maven项目
- 按下 Ctrl+Shift+P 打开命令面板,输入java,依次选择Create Java Project、Maven;接着选择基于 maven-archetype-quickstart 创建
- 在弹出的对话框中选择一个生成项目的目录
- 选择完成后,会开始项目的生成,期间需要在终端中填入必要的信息。groupId组织名(java包名)、artifactId项目名、version版本号、package打包后jar的名称

如下系列图所示:因为Visual Studio Code需要JDK11;但是Mirth Connect只能运行于Oracle JDK8环境下,故在VS Code选中项目名plug,点击‘Setup JDKS for Project and VS Code java’设置不同的JDK环境:
安装微软官方支持的Azul OpenJDK11是因为Visual Studio Code调试java代码需要这个运行环境;
安装Oracle官方JDK8是因为Mirth Connect服务运行在JDK8下,自定义扩展jar包的插件开发必须和MC Server使用的SDK一致。

 
(如上图所示:第一步,选中自定义插件plug工程;第二步,修改pol.xml文件使用1.8版本JDK;第三步,设置plug插件工程project JDKs为JAVA-SE1.8 的JDK环境)

(如上图所示:第一步,选中自定义插件plug工程;第二步,设置VS Code IDE开发工具Java Tooling Runtime设置为JDK11环境)

(如上图所示:第一步,选中自定义插件plug工程;第二步,确认已经安装了JDK8和JDK11的环境)
6.修改plug插件工程app类源码并调试

创建完成后,打开目录即可
Ctrl+Shift+D可打开调试面板,进行调试;
本示例自定义Jar包插件源码如下:
package eohagedu; /**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
}
public String show( String arg )
{
return arg;
}
public static String returnSomething() {
return "Hello, World!";
}
public int calAdd( int[] args )
{
int c=args[0]+args[1];
return c;
}
}
7.打开Mirth Connect 3.10.1驾驶舱,加载自定义扩展Jar包目录
选择左侧‘Settings’菜单,点击‘Resources’页签,指定第6步骤编译出的自定义Jar包插件目录为D:\Mirth\jarTest;然后点击‘Reload Resource’菜单完成自定义插件导入

8.新建测试Mirth Connect信道

9.测试自定义扩展Jar包调用,在源端的转换中添加调用自定义Jar包的js脚本
 

(如上图所示:分别调用静态方法returnSomething、字符串实例方法show、数组参数实例方法calAdd)
// create new package root using specified classloader
var iso = Packages(contextFactory.getIsolatedClassLoader());
// access library using isolated ClassLoader
var myLib = new iso.eohagedu.App();
//static Func Caller
logger.info(iso.eohagedu.App.returnSomething());
//Instance string Func Caller
logger.info(myLib.show('123'));
//Instance Array Func Caller
var A=[1,2]
var B=myLib.calAdd(A);
logger.info(parseInt(B));
logger.info(B===3);
10.发布信道测试

大功告成!!!
本课程总结:
1.Mirth Connect 信道调用自定义Jar包:可以指定任意目录作为插件目录,不需要重启MC服务即可直接在信道中使用。
2.信道中指定依赖时,选中所加载的自定义Jar包目录,此信道即可使用此扩展自定义jar包
3.通过js脚本调用java自定义jar包,扩展了Mirth Connect系统集成与数据交换平台的功能
4.强大如斯的Mirth Connect平台,您有什么理由不好好研究呢?
欢迎大家持续关注潤沁網路大學本系列Mirth Connect课程的教学
第八課-Channel Study For Caller Custom JAR Lib的更多相关文章
- Adding a custom jar as a maven dependency
		Using maven in a Java project is great. It manages builds (as customized as you may need), execution ... 
- How to include custom library into maven local repository?--转
		原文地址:https://www.mkyong.com/maven/how-to-include-library-manully-into-maven-local-repository/ There ... 
- Java 8新特性之 Nashorn(八恶人-6)
		Joe Gage 盖奇·乔 “First time in my life I made a pretty penny.And, figured I'd come home and spend time ... 
- 传智博客(JavaWeb方面的所有知识)听课记录(经典)
		一. JavaWeb基础 第一天: 1.Eclipse详解: (1).Bad versionnumber in .class file:编译器版本和运行(JRE)版本不符合.高的JRE版本 ... 
- The Go Programming Language. Notes.
		Contents Tutorial Hello, World Command-Line Arguments Finding Duplicate Lines A Web Server Loose End ... 
- [置顶]
        Android开发百科全书
		友情提示根据目录 快速查找问题 %1$s %1$d Android string 1.整型,比如"我今年23岁了",这个23是整型的.在string.xml中可以这样写,<s ... 
- Practical Go: Real world advice for writing maintainable Go programs
		转自:https://dave.cheney.net/practical-go/presentations/qcon-china.html?from=timeline 1. Guiding pri ... 
- Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)(二)
		Flume官方文档翻译--Flume 1.7.0 User Guide (unreleased version)(一) Logging raw data(记录原始数据) Logging the raw ... 
- maven的使用--初级篇
		一.前言 早就知道maven 在java 项目的管理方面名声显赫,于是就想着学习掌握之,于是查阅了大量文档.发现这些文档的作者都是java 的大腕,大多都是站在掌握了一定maven 基 ... 
- 学习maven的使用,看到一篇很实用的入门教程(菜鸟级入门)
		一.前言 早就知道maven 在java 项目的管理方面名声显赫,于是就想着学习掌握之,于是查阅了大量文档.发现这些文档的作者都是java 的大腕,大多都是站在掌握了一定maven 基 ... 
随机推荐
- Google Chart API学习(一)
			圆饼示例: <html> <head> <!--Load the AJAX API--> <script type="text/javascript ... 
- DWR之入门实例(一)
			DWR(Direct Web Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给 ... 
- 【剑指 Offer II 118. 多余的边】并查集求回路
			class Solution { int[] parent; int[] rank; public void init(int n) { parent = new int[n + 1]; rank = ... 
- 使用Servlet实现文件下载
			一位朋友最近在学习JavaWeb开发,开始学习文件下载操作,他自己尝试着去网上看一些教程,总的来说也不是太了解,就让我和他说说,如何实现文件下载功能.我和他说了一下大致的思路,主要分为前端和后端两部分 ... 
- Android之Window和弹窗问题
			目录介绍 10.0.0.1 Window是什么?如何通过WindowManager添加Window(代码实现)?WindowManager的主要功能是什么? 10.0.0.2 Window概念解析?W ... 
- ItemsControl和ListView、ListBox的区别
			1.ItemsControl用来显示一个数据项的集合,它的底层是一个列表,它可以非常灵活的展示布局和数据 以下是例子 <ItemsControl ItemsSource="{Bindi ... 
- CMake使用Boost
			cmake_minimum_required(VERSION 2.8) set(Boost_INCLUDE_DIR /usr/local/src/boost_1_46_1) set(Boost_LIB ... 
- 《Go程序设计语言》学习笔记之函数变量和匿名函数
			<Go程序设计语言>学习笔记之函数变量和匿名函数 一. 环境 Centos8.5, go1.17.5 linux/amd64 二. 函数变量 1. 概念 像其它的值一样,函数变量也有类型, ... 
- 探寻UUID的起源与奥秘:从时间戳到唯一标识
			1. UUID起源与原理 UUID(Universally Unique Identifier)是一种唯一标识符,最初由Apollo计算机公司的软件工程师Roedy Green在1987年提出.其原理 ... 
- #二分图,并查集#洛谷 6185 [NOI Online #1 提高组] 序列
			题目 分析 考虑2操作可以在保证总和不变的情况下任意修改, 如果将2操作所在的连通块用并查集缩点,那么再考虑1操作, 按照1操作建边,如果存在奇环,那么只要这个环的点权和为偶数一定能使 \(a,b\) ... 
