引言
IBM® WebSphere® Process Server v6(以下称为 Process Server)是 IBM 提供的下一代业务集成软件,它基于包含了开放标准的面向服务的体系结构 (SOA)。它取代了 WebSphere Business Integration Server Foundation v5.1.x(以下称为 Server Foundation)。集成开发环境 (IDE) 也从 WebSphere Studio Application Developer Integration Edition(以下称为 Application Developer)v5.1.x 发展到了新的 WebSphere Integration Developer v6(以下称为 Integration Developer)。Integration Developer 是作为 Process Server 的补充的一个工具,它基于 Eclipse 3.0 并带来了基于组件开发的一个完整的新范例。
先前称作 |
现在称作 |
WebSphere Business Integration Server Foundation v5.1.x |
WebSphere Process Server v6 |
WebSphere Studio Application Developer Integration Edition v5.1.x |
WebSphere Integration Developer v6 |
在将业务集成应用程序从 Server Foundation 迁移到 Process Server 时,您可以在以下两种方法中选择:
- 一种方法是运行时迁移,将整个 Server Foundation 配置(包括已安装的应用程序和配置文件)迁移到 Process Server 配置文件。应用程序二进制文件并没有变化,它们“只是”像在 Server Foundation 中那样运行。WebSphere Process Server v6.0.0 并没有提供这种迁移方法,但是正在考虑将其用于该产品的未来版本。
- 另一种方法是源构件迁移,它使用新集成开发环境中的迁移工具。这是 v6.0.0 中提供的唯一迁移方法。在这种情况下,将应用程序的源代码迁移到新编程模型并进行改写,以便您可以将迁移的应用程序部署到 Process Server。迁移向导将为您自动迁移所有 BPEL 文件和 BPEL WSDL 扩展,然后您必须执行一组手动迁移步骤以完成这一迁移。
本文描述了源构件迁移方法。您应该具有使用 Application Developer 的经验,并且对 Java™ 编程和业务流程相当了解。
源构件迁移概述
本文介绍了迁移一个简单服务项目(包含作为 EJB 公开并连接到 Java 服务的业务流程)的源构件的步骤。在本例中,业务流程只需调用 Java 服务,Java 服务反过来发送电子邮件。通过接收电子邮件,该操作帮助您了解应用程序何时成功执行。应用程序在 Application Developer 创建,在 Server Foundation 部署。我们向您展示了如何使用迁移向导将项目导入到 Integration Developer,如何重新连接组件,以及如何为在 Process Server 部署做好准备。
现有资源
现有的 Application Developer 项目交换 zip 文件包含构成企业应用程序的 6 个项目。应用程序的工作部分包含在 EmailService 服务项目中。EmailServiceCustomWeb 项目包括允许您从 Web 浏览器调用服务的 JSP。这两个项目都是在 EmailServiceEAR 定义的 EAR 中部署的。
我们将使用 Integration Developer 来迁移服务项目和自定义 Web 项目,并使用迁移的 JSP 测试业务流程。除了解压缩项目交换 zip 文件以外,所有步骤都是在 Windows® 平台上的 Integration Developer v6.0.0 中执行的。
将项目交换文件解压缩到一个临时文件夹。然后从 Windows 开始菜单启动 Integration Developer。选择 Start -> Programs -> IBM WebSphere -> Integration Developer V6.0 ->WebSphere Integration Developer V6.0。
使用迁移向导
有两种方式访问迁移向导。当您第一次打开 WebSphere Integration Developer 时,欢迎屏幕将显示几个图标。单击绿色箭头图标以启动迁移向导,如图 1 所示。
图 1. WebSphere Integration Developer 欢迎屏幕
提示:在使用迁移向导时,关闭 Integration Developer 中的项目自动构建选项。请转到 Main Menu -> Project,然后取消选择 Build Automatically。如果您关闭该 AutoBuild 选项,请记住定期构建整个项目或者重新启用 AutoBuild 选项。
下一屏幕向您呈现了 3 个源迁移选项。单击具有 5.1 和一个箭头的图标,如图 2 所示。
图 2. WebSphere Integration Developer 初始迁移屏幕
另一种方式是通过 File Import 选项浏览 Integration Developer。要启动迁移向导,请使用主菜单:
- 转到 File -> Import。
- 从导入窗口中选择 WebSphere Studio Application Developer Integration Edition Service Project,如图 3 所示,然后单击 Next。这将启动迁移向导。
图 3. 导入窗口
- 单击 Browse 按钮,并转到您解压缩项目交换 zip 文件的临时文件夹。
- 突出显示要导入的项目文件夹,并单击 OK。在本例中,导入图 4 中所示的 EmailService 项目。
提示:该向导能够快速地填写它找到的模块名。如果它没有填写,请输入项目的模块名。我们建议您使用相同的原有项目名称。
图 4. 指定源构件
- 单击 Next 进入设置迁移选项的屏幕。
- 请确保选择选项以在注释中保留原有的 BPEL Java 代码段。通过将它们包含在注释块中,保留所有现有的 Java 代码段。单击 Finish。
- 迁移向导将创建一个新的“业务集成模块”项目,导入所有现有的 Application Developer 构件,并转换源构件。您会看到具有一些消息的 Migration Results 屏幕。
在本例中,您将看到 5 条信息消息。其中有 4 条信息表示:“The following java package is not being migrated because it contains generated classes that are no longer valid”。这些消息是安全无害的。Application Developer 已经自动生成 java 包以将应用程序绑定到 Server Foundation 运行时。新工具将生成新的绑定。单击 OK。
请注意:如果出现错误,您可以突出显示某一消息行,然后单击 Generate ToDo’s 按钮以在代码中生成 TODO,这样您可以稍后修复这些错误。
如果您关闭了 AutoBuild 选项,可以再次打开(Integration Developer Main Menu -> Project -> Build Automatically)。
使用迁移的资源
现在您将使用迁移的资源。
- 请转到 Integration Developer 中的 Business Integration 透视图。在导航窗格中,通过双击名为 EmailService 的 Assembly Diagram 图标,,打开最新创建的 EmailService 项目。该项目将在 Assembly Editor 中打开。
- 您将在画布中看到一个名为 EmailBusinessProcess 的项。这是服务组件体系结构(Service Component Architecture,SCA)组件,它的实现是在业务流程执行语言(Business Process Execution Language,BPEL)中实现的电子邮件业务流程 (Email Business Process)。
图 5. 显示一个业务流程组件的 Assembly Editor
- Assembly Editor 左侧是工具面板。您需要第二个工具箱中的 Stand-alone References 工具,该工具箱由一个框式蓝色箭头图标表示。单击业务流程组件的左侧,然后单击工具并将其放在画布中。如果需要空间,可以将业务流程组件拖到右侧。
- 在 Assembly Editor 工具面板中,单击绿色细线图标,,然后单击 Stand-alone References 组件,最后单击 Business Process Component (EmailBusinessProcess)。
- 弹出的消息将通知您“a matching reference will be created on the source node. Do you want to continue?”。不要选择“Always create without prompt”框。单击 OK。
- Select Interface 窗口弹出,如图 4 所示。您将看到可以创建引用的两个接口,即 ProcessPortType 和 MailSMTP。请选择 MailSMTP 并单击 OK。
图 6. 接口选择屏幕
- 将提示您是否希望为 Stand-alone Reference 生成 Java 接口,而不是 Web 服务描述语言(Web Services Description Language,WSDL)接口。由于您要使用 JSP 和 Java 客户机访问流程,因此选择 Yes。
- 单击 Ctrl-S 保存与图 7 相似的组装关系图 (Assembly Diagram)。观察每一个组件的细节以及 Properties 窗格的 Details 选项卡中的连接。
- 请选择 Stand-alone References Component。在 Properties 视图中,记住 Details 窗格中的 Partner Reference 的名称。在本例中,名称为
MailSMTPPartner
。在 Details 窗格中,您可以找到客户机使用的自动生成的 Java 接口的名称。如图 7 中所示,接口为 com.scb.process.email.mail.smtp.MailSMTP
。
图 7. 显示属性窗格和两个连接组件的组装关系图
请注意:我们为什么向业务流程组件提供独立引用呢?独立引用允许非 SCA 客户机(如类似于 JSP 的 J2SE 或者 J2EE 客户机)访问 SCA 组件。如果您只计划使用 BPC 资源管理器或者组件测试框架 (Component Test Framework) 调用流程,则不需要独立引用,这是因为这些内置工具使用 BPC 和 SCA API 直接调用流程。
- 回到 Assembly Editor,选择 EmailBusinessProcess 组件的引用连接器(由右侧具有 1:1 的小框表示)。右键单击该引用连接器,并从上下文菜单中选择 Wire References to New -> Components。
该操作将在 EmailBusinessProcess 组件的右侧创建与接口 MailSMTP 同名的通用 SCA 组件。这会自动将业务流程组件连接到新的通用组件。
- 单击 Ctrl-S 保存组装关系图。
- 右键单击 Generic Component MailSMTP,并从上下文菜单中选择 Select Implementation -> Java。该通用组件变成 Java 组件。在 Pick Implementation 屏幕的 Select entries 字段中,开始键入
mailsm
,直到看到名为 MailSMTP 的类为止。突出显示这个类并单击 OK。
提示:Qualifier 字段显示包的名称,该名称与包出现在原有的 Application Developer 服务项目中的名称相同。这就是在开始迁移流程之前您必须了解服务项目的结构的原因。
由于这个 Java 服务示例的输入/输出参数具有简单的类型(字符串和布尔型),因此 SCA 框架自动等同于 SCA 组件公开的 WSDL 接口和 Java 类的接口。例如,在 EmailService 项目中比较 MailSMTP.wsdl 和 MailSMTP.java。转到 Java 透视图查看 Integration Developer 中的这些文件。
如果您不确定 Java 接口是否与满足 Java 要求的 SCA WSDL 兼容,请不要选择 Select Implementation,而要选择 Generate Implementation。将要求您具有可以生成类的包。向导在组件公开的 WSDL 接口中生成与 SCA 兼容的 Java 接口。组件 MyComponent 的类名为 MyComponentImpl.java
。
现在,检查每个方法的输入参数的类型及其返回类型,以确保它们都匹配 Java 类的接口。如果它们不匹配,您有两种选择。第一种选择涉及到修改原有 Java 类的接口。或者,可以将生成的骨架作为实现类并编写自定义代码,以在生成的 Java 骨架中调用每个方法的原有 Java 类。当操作的输入或者输出类型很复杂时(例如,Customer 对象具有地址、姓名之类的子对象),通常会出现问题,因为在 SCA 范例中,它们是以 commonj.sdo.DataObject 表示的。而在原有 Java 类中,参数是以 Java bean 表示的。
- 通用 SCA 组件变成 Java 组件,业务流程组件与其连接。画布与图 8 类似。画布中唯一的显著变化是“J”,表示 MailSMTP 是一个 Java 组件。
图 8. 显示 3 个连接组件的组装关系图
- 这就完成了。单击 Ctrl-S 保存组装关系图并关闭 Assembly Editor。
下一步要迁移 Application Developer 项目交换文件中包含的 Web 项目。
迁移用于调用业务流程的 JSP
在 Application Developer 项目交换文件中,EmailServiceCustomWeb 项目包含 JSP (index.jsp),它从用户获得 4 个参数并使用 Facade Enterprise Java Bean (EJB) 调用业务流程。该 Facade EJB 是在 Application Developer 中生成的,它包含在 EmailServiceEJB 项目中。
在 Integration Developer 中,没有生成 Facade EJB 的捷径,因为它使用 SCA 编程模型中的新抽象层。因此,您必须迁移 index.jsp 以使用 SCA 编程模型,而这将调用业务流程。
- 首先,从项目交换 zip 文件导入 EmailServiceCustomWeb 项目。在 Integration Developer 中,转到 File -> Import -> Project Interchange。单击 Next 并浏览到该 zip 文件。选择图 9 中所示的 EmailServiceCustomWeb 并单击 Finish。
图 9. 项目导入屏幕
许多在 Application Developer 中有效的环境变量在 Integration Developer 中不再使用,因此我们需要确定 Web 项目的类路径。
- 转到 Java 透视图,Window -> Open Perspective - > Other -> Java,并选择 EmailServiceCustomWeb 项目。右键单击并选择 Properties。
- 转到 Java Build Path,在 Projects 选项卡中,删除 EmailServiceEJBClient 上的依赖项。请确保 EmailService 上有一个依赖项,如图 10 所示。
图 10. Java 构建路径上的项目
- 在 Libraries 选项卡中,突出显示所有条目并单击 Remove,以从构建路径中删除所有 JAR 和类文件夹。
- 单击 Add Library,突出显示 JRE System Library,然后单击 Next。在 Alternate JRE 字段中,使用下拉选择器选择 WPS Server v6.0 JRE。请不要 选择 WebSphere v6 JRE。单击 Finish。
- 单击 Add Library,突出显示 WPS Server Target,然后单击 Next。选择“Configure wps server classpath”并单击 Next。您的属性屏幕将类似于图 11。
图 11. Java 构建路径上的库
- 单击 Project References。设置对 EmailService 项目的引用(如图 12 所示)并删除所有其他引用。
图 12. 项目引用设置
- 单击 OK 保存新设置。这将清除所有错误(除 index.jsp 中的 JSP 编译错误之外)。Application Developer v5.1 在 J2EE 1.3 级别。您可以将 Web 应用程序迁移到 Integration Developer v6.0 中可用的 J2EE 1.4 级别。
提示:只有在工作区启用高级 J2EE 功能后才可以使用迁移选项。为此,请转到 Window -> Preferences -> Workbench -> Capabilities -> Advanced J2EE -> Enterprise Java,如图 13 所示。
图 13. 启用工作台的功能
- 在导航窗格中,突出显示 EmailServiceCustomWeb 项目。右键单击并从上下文菜单中选择 Migrate -> J2EE Migration Wizard。
- 在 J2EE Migration Wizard 欢迎屏幕中,忽略警告并单击 Next。对于该场景,缺省设置是可以接受的。图 14 显示了缺省 J2EE 版本为 v1.4,目标服务器是 WebSphere Process Server v6.0。单击 Finish。
图 14. 项目的迁移设置
- 查找消息“Migration finished successfully”。单击 OK。由于这只是一个简单的项目,因此 Details 窗格指示许多项不需要迁移。
- 还有最后一步。您需要将该自定义 Web 项目添加到为 EmailService 业务集成模块生成的企业应用程序中。该操作是在 Integration Developer 的 J2EE 透视图中完成的,包括几个步骤。
- 转到 J2EE 透视图,Window -> Open Perspective -> J2EE。在导航窗格中,转到 Enterprise Applications -> EmailServiceApp -> Deployment Descriptor。打开 EmailServiceApp 的部署描述符。
- 在主窗口中,单击 Module 选项卡。在 Modules 下面,单击 Add,如图 15 所示。弹出的 Add Module 窗口将查找 EmailServiceCustomWeb 项目。选择该项目并单击 Finish。
图 15. 项目引用设置
- 单击 Ctrl-S 保存应用程序的部署描述符。
- 在 Integration Developer 中,不能再为业务流程生成 Facade EJB。您必须手动迁移这些代码以使用 SCA 编程模型调用业务流程。这就是您需要修复 index.jsp 文件中的错误的原因。
在 J2EE 透视图中,编辑 index.jsp。在 Project Explorer 窗格中,转到 Dynamic Web Projects -> EmailServiceCustomWeb -> Web Content ->index.jsp。双击 index.jsp 打开该文件进行编辑。选择 JSP 编辑器的 Source 选项卡。您将看到“if”代码块内的错误,如图 16 所示。
图 16. 编辑 index.jsp 文件
- 使用下面的代码替换 if 代码块:
com.scb.process.email.mail.smtp.MailSMTP service =
(com.scb.process.email.mail.smtp.MailSMTP)
com.ibm.websphere.sca.ServiceManager.INSTANCE.
locateService("MailSMTPPartner");
boolean success = service.sendEmail(
request.getParameter("server"),
request.getParameter("from"),
request.getParameter("to"),
request.getParameter("contents"));
|
- 保存对 index.jsp 和部署描述符的更改。
现在,您可以通过下面列出的三种方法进行测试,其中每一个测试都是相继测试应用程序的组件。
使用 Integration Developer 集成测试客户机测试迁移的组件
现在您可以在 Integration Developer 中测试迁移的应用程序。通过使用嵌入式测试服务器运行应用程序,集成测试客户机允许您单独测试每一个组件。
- 转到 Business Integration 视图中的导航窗格。右键单击 EmailService 项目。从上下文菜单中选择 Test -> Test Module。对于要测试的组件,选择 MailSMTP。
请注意:您可以选择调用的组件。在 MailSMTP 的第一个示例中,选择 Java 组件。稍后,确定 Java 组件正确工作后,您可以执行调用业务流程组件的更加全面的测试。
图 17. 调用事件
- 在 Events 屏幕中,输入 4 个输入请求参数的值(电子邮件服务器的名称、电子邮件地址以及用作电子邮件内容的文本),并单击 Continue。
- Deployment Location 窗口弹出。请选择突出显示的 WebSphere Process Server v6.0 并单击 Finish。
- 集成测试客户机将启动嵌入式 Process Server 测试服务器,安装并启动迁移的应用程序,并且使用您指定的参数调用 MailSMTP Java 服务。如果输入参数是正确的,您将看到返回结果的值为“true”,如图 18 所示。
图 18. 返回结果
- 通过检查电子邮件是否已发送到收件人,验证是否成功调用 Java 服务,如图 19 所示。
图 19. 测试电子邮件
该测试展示了如何使用 Integration Developer 集成测试客户机调用 Java 组件 (MailSMTP)。
使用 Integration Developer 集成测试客户机测试更多迁移的组件
- 在 Business Integration 透视图中右键单击 EmailService 项目,回到 Events 屏幕,然后从上下文菜单中选择 Test -> Test Module。
- 在 Component 字段中,单击下拉箭头并选择名为 EmailBusinessProcess 的组件。它是实现为 BPEL 流程的业务流程组件。它调用刚才测试的 MailSMTP Java 服务。这是一个更加全面的测试,演示了如何在业务集成模块中增量测试组件。
- 如上一个测试那样,输入 4 个请求参数的值,然后单击 Continue。
图 20. 选择组件
- 这也将获得一个成功的测试。收件人获得了测试电子邮件,并且 Events 屏幕显示图 21 中所示的结果。
图 21. 成功的结果
使用迁移的 JSP 测试迁移的应用程序
现在您可以使用迁移的 JSP 测试迁移的应用程序。这是一个全面的测试,因为它表示一个端到端场景。
- 转到 J2EE 透视图中的导航窗格。展开 Enterprise Applications 并右键单击 EmailServiceApp 项目。从上下文菜单中选择 Run -> Run on Server。
- 在 Server Selection 屏幕中,选择 WebSphere Process Server v6.0(如图 22 所示)并单击 Finish。
图 22. 定义新测试服务器
- Process Server 测试服务器启动后,应用程序发布到该测试服务器。在 Integration Developer 的主窗口中,Web 浏览器窗口打开。缺省情况下,它指向
http://localhost:9080/EmailServiceCustomWeb/
,如图 23 所示。
图 23. WebSphere Integration Developer 内的 Web 浏览器
- 在 Web 浏览器屏幕中,输入 4 个输入请求参数的值,然后单击 Enter。请记住输入电子邮件服务器的名称和您自己的电子邮件地址。(作者不希望得到所有这些测试电子邮件!)
- 如果一切进展顺利,您将看到在 Web 页面下部输出的消息“Result is: true”。验证 JSP 是否成功调用了业务流程。JSP 调用您创建的独立引用,独立引用反过来调用迁移的业务流程和 Java 服务。当收件人接收到电子邮件时测试完成,如图 24 所示。
图 24. 测试电子邮件
请注意:如果您关闭了 AutoBuild 选项,可以再次启用(Integration Developer Main Menu -> Project -> Build Automatically)。
您已经通过三种不同方式成功测试了迁移的应用程序,这就在环境中为您准备了一个完整的端到端场景。
结束语
本文介绍了如何迁移发送电子邮件的简单业务流程,如何在 WebSphere Process Server 运行时运行该业务流程,以及如何测试迁移的流程。从 WebSphere Studio Application Developer Integration Edition v5.1.x 迁移一个简单的服务项目以使其在 WebSphere Integration Developer v6.0 中工作是相当简单的,当服务项目具有一个项目文件(如 EmailService 示例和一些简单的 Java 代码)时尤为如此。我们了解这不是一个典型的 BPEL 业务流程示例,但是使用它在 Integration Developer 中引入了迁移向导并体验了源构件迁移。我们希望实际的迁移项目使用迁移向导,但是它也会涉及到大量的手动迁移工作。