使用WebSphere Integration Developer和WebSphere Process Server的二进制Jar文件

Grant D. Taylor, 顾问软件工程师, IBM
 
简介: 本文讨论将二进制 Jar 文件集成到 WebSphere® Integration Developer 和 WebSphere Process Server 应用程序的多种方法。
 

简介

我们有很多理由将二进制 Jar 文件集成到一个 WebSphere Integration Developer(以下简称为 Integration Developer)模块,或 WebSphere Process Server(以下简称为 Process Server)中用于执行的库。可能需要将某个组织或第三方开发的一些现有 Java™ 资源加入到应用程序中。在 Integration Developer 和 Process Server 应用程序中使用二进制 Jars 有多种方法和方面。可以将 Jars 嵌入在单一模块或者库中使用,或者用户想要在编辑时在模块和库之间共享一个 Jar。当一个模块部署在服务器上时,对 Jar 如何进行共享也有很多考量。

本文讲述将一个 Jar 加入到 Integration Developer 应用程序,然后做出适当的设计和配置决定的不同方法。为了方便本文的讲解,一个 Integration Developer 应用程序就是一个 Process Server 应用程序的同义词。

 

在一个库或模块内使用 Jar

使用二进制 Jar 最简单的例子就是在一个独立的库或者模块中使用它。要使用这种方法,只需将 Jar 复制并导入到想要使用 Jar 的库或模块中。为了说明这个设置,我们会使用一个简单的 Integration Developer 应用程序。图 1 显示了将一个 Jar 文件 mybinary.jar 复制到新创建的 Integration Developer模块 “MyModule” 中的结果。


图 1. 复制到 MyModule 的 Jar 文件
复制到 MyModule 的 Jar 文件

Jar 文件成为 Business Integration 视图中的一个工件,同样可以进行管理。Jar 工件可以执行常规操作,比如删除、复制、粘贴、移动,还有组操作。mybinary.jar 内的内容在模块内可用。作为一个例子,在一个模块中创建一个简单的 Java 组件,显示 Jar 内容的用法。清单 1 使用 Jar 中的类 SampleBinaryClass,显示了 Java 组件实现中的接口操作方法的实现。


清单 1. Java 组件代码
				
public String operation1(String input1) {
	return new SampleBinaryClass().sampleMethod(input1);
}

现在对模块进行设置来使用 Jar 和 Jar 中的内容。设置很简单,部署也可以由 Integration Developer 自动处理。Jar 会被自动复制到模块的备份 EAR 项目,并配置为一个通用 Jar。图 2 显示了如何复制 Jar 到 Integration Developer 工作空间内的备份 EAR 项目。


图 2. 将 Jar 复制到 EAR 项目
将 Jar 复制到 EAR 项目

下载文件

注意,在本文中提到的文件可以 下载,且都使用 Integration Developer 6.2.0.2 创建。本说明适用于版本 6.1.x 到 7.x。项目交换文件都能够迁移到 Integration Developer V6.2.0.2 以后发布的版本中。

在库中使用 Jar 的步骤是完全一样的。只需将 Jar 复制到库中,这样 Jar 可以在库内可供随意使用。Integration Developer 会深度搜索一个模块依赖的所有库,并将库中所有的 Jar 复制到模块已生成的 EAR 项目。EAR 项目中 Jar 的存在允许它们被部署,这样类在运行时也可以使用。可以下载模块设置的 项目交换文件,名为 “JarInModule.zip”。

使用这种方法将 Jar 文件加入到 Integration Developer 应用程序的主要好处就是,它极为简单。Integration Developer 处理 Java 构建路径的设置和备份 EAR 设置。您唯一需要做的就是把 Jar 复制到模块或库中。但是如果许多模块和库都需要使用一个 Jar 或一组 Jar 时,要怎么办?使用本节描述的方法,将 Jar 复制到每个模块或库中可能会比较复杂,工作空间也会变得没必要的大,更重要的是,对所有的 Jar 使用者发布一个升级版的 Jar 也非常困难。下一节将会探讨避免这些缺陷的方法。

 

在编辑时共享 Jar

如果一个 Jar 被许多模块或者库使用,那么这个 Jar 就需要在编辑时被共享。这就意味着工作空间中只有一个 Jar 的副本,所有的模块和库将会引用惟一的副本。如果需要用到一个新版本的 Jar,那么升级所有的模块和库只需修改一个文件。为了说明这个设置,例子中还会包括另一个模块 ModuleToo,它也需要用到 Jar。

您首先需要创建一个常规的 Java 项目来存放 Jar 文件。在给定的 样例 中,这个 Java 项目名为 “JarProject”。虽然样例使用一个默认的配置,但您可以通过由 Java 开发工具支持的定制设置 Java 项目。图 3 显示了在原始模块 MyModule 和新模块 ModuleToo 中创建的 Java 项目。


图 3. 新 Java 项目
新 Java 项目

WebSphere Integration Developer V6.0.x

在 Integration Developer 6.1 版本之前,在把 Jar 文件复制到模块或者库中之后会出现一个对话框。用户可以触发一个包含 Jar 的 Java 项目的生成。这是在这些版本中使用 Jar 的唯一受支持方法。

下一步就是把 Jar 文件移动到 Java 项目(或者如果从头开始,把 Jar 复制到 Java 项目中)中。您可以把 mybinary.jar 工件从 MyModule 中拖拽出来,然后将它放置到 JarProject 中来移动文件。Java 项目现在需要将其构建路径属性升级,让 Integration Developer 知道 Jar 的目的是成为可用 Java 的容器。为此,需要打开 JarProject 的 Java Build Path 属性页面。在 Libraries 选项卡上,使用 Add Jars… 按钮来添加 mybinary.jar 到设置中。图 4 显示添加了 Jar 之后的属性页面。


图 4. Java 属性页面
Java 属性页面

最后一步就是打开每个模块的依赖项编辑器,把 JarProject 作为一个依赖 Java 项目添加进去。图 5 显示了将 JarProject 作为一个模块的依赖项添加之后依赖项编辑器的状态。


图 5. 模块的依赖项编辑器
模块的依赖项编辑器

依赖 JarProject 的模块和库现在能完全访问 mybinary.jar 的内容,部署也能够得到自动处理。Integration Developer 处理模块和库的 Java 构建路径配置,这样就可以使用它所包含的 Jars。Integration Developer 还能确保将 Jars 作为通用 Jars 设置备份 JEE 项目。图 6 显示了将 JarProject 作为每个模块的依赖项添加之后,mybinary.jar 被自动复制到每个模块的备份 EAR 项目中。本节中的模块和库可从 JarInJavaProject.zip 项目交换文件中 下载


图 6. 模块的备份 EAR 项目
模块的备份 EAR 项目

注意,JarProject 可以包含多个 Jar,它们都可见,而且部署在每个引用项目的库或者模块中。这有助于有相关逻辑或用途的 Jar 集中在一起。包含 Jar 的项目可以在一个组织内共享。如果需要进行升级,那么有新内容的 Integration Developer 构建流程中,所有的模块和库都会被升级。同样,您还可以向工作空间添加 Java 项目,从正在消费的模块或者库中执行一个引用,以此来访问所有的 Jar。这个设置的另一个功能就是,包含二进制 Jar 的 Java 项目还可能包括编辑过的 Java 源代码。为输出已编辑源代码,需要创建并部署一个单独的 Jar,但是要使用类路径上包含的 Jar 进行适当设置。因此,有可能包含一个基本的二进制 Jar 和部分增值代码。它们可以存在于同一个包装实体上。

图 6 还概述了这种方法中所需注意的一点:在运行时仍然还有每个 Jar 的副本。每个 EAR 都包含一个副本,那么如果将多个模块部署到一个生产服务器中,那么所有的模块都需要重构和重新部署。此外,如果共享的 Jar 很大,那么就需要用到更多的服务器资源,比如内存。最后一节将解释如何在运行时共享 Jar。

 

在运行时共享一个 Jar

在 Integration Developer 应用程序中使用 Jars 的最后一个方面就是,如何在运行时在多个模块或者库中共享同一个 Jar 副本。这个设置也是最难的,尤其从部署角度来说。

第一步就是停止 Integration Developer 将 Jar 添加到临时 EAR 项目。仅当 Jar 在 Java 项目中时,这个动作才能完成,正如 上一节 所述。如果将 Jar 直接添加到一个模块或者库中,就不可能在运行时共享一个 Jar。

在模块的依赖项编辑器中,只需打开依赖项编辑器,选择 JarProject,在 Advanced 部分取消选择 Deploy with Module 复选框,如图 7 所示。


图 7. 取消选择 Deploy with Module
取消选择 Deploy with Module

取消选择复选框以后,会出现一个对话框,解释 Integration Developer 和 Process Server 不会再处理 Java 项目或者所包含的 Jar 的部署。它还包含一个到 操作指南 的链接,这些操作指南说明如何在服务器中配置一个共享的 Jar。为了在运行时配置 Jar,需要选择 Java 项目中每个独立的 Jar,然后分别进行部署。如果 Java 项目包含任何源代码,那么就需要使用 Integration Developer 开发环境中的 Java 工具将 Java 项目导出为 Jar 文件。

继续上面的例子,对 MyModule 进行配置使其 部署依赖项编辑器的 JarProject。请看备份 EAR 项目,您可以看到 Jar 并没有包含其中,而且也因此不会被部署。图 8 显示了保存依赖项编辑器之后 EAR 项目的状态。


图 8. 在运行时共享 Jar 的 EAR 项目
在运行时共享 Jar 的 EAR 项目
 

添加 Jars 的其他方法

如果您在 Integration Developer 中使用过用户接口的 Java 部分,那么很可能会使用一个给定模块或者库的 Java Build Path 属性页面配置一个库(外部或者内部)。然而,改变 Integration Developerowever 模块或者库的 Java 属性是不受支持的。Integration Developer 管理模块或者库的 Java 属性,所以任何对 Java 属性的改变都可能在 Integration Developer 构建流程中被覆盖。

另外,外部 Jar 引用不能在一个分布式开发环境中良好运行。开发团队的每个成员都需要有每个 Jar 的副本,且可能更改消费模块和库中每个 Jar 的绝对路径。这些步骤繁琐且易出错。使用本文中的配置方法,您就只需要从团队存储库系统查看项目。如果您使用一个 Integration Developer 解决方案,那么步骤就更简单直接了。如果使用自动构建系统,您就可以使用同一个参数,而不必使用外部 Jar。

 

结束语

本文讨论了将二进制 Jar 文件添加到 WebSphere Integration Developer 应用程序的所有受支持配置,强调了每种配置的优缺点,这样当您使用 WebSphere Integration Developer 应用程序中的 Jar 文件时,就可以帮助您尽可能地做出最佳决策。


 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14789789/viewspace-669489/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/14789789/viewspace-669489/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值