本文提供了一些高级场景,用于通过在 IBM WebSphere Integration Developer V6 中开发的服务组件体系结构模块来集成各种环境中部署的现有 Enterprise JavaBean 服务。
引言
本文章系列的第 1 部分开发并测试了一个集成模块,在该模块中,服务组件体系结构 (SCA) 组件使用 IBM® WebSphere® Integration Developer 和集成 WebSphere Process Server 测试环境导入并调用 Enterprise JavaBean (EJB) 组件。在这篇文章发表之后,许多读者询问如何作为调用 SCA 组件调用在不同的应用服务器或 Java™ 虚拟机 (JVM) 中运行的现有 Enterprise JavaBean。本文将讨论解决这些基于合理的现实情况的问题的方法和必要条件。
建议您在开始学习本文之前,先阅读本系列的第 1 部分“将 EJB 服务与 WebSphere Process Server 集成”。
运行时拓扑结构
通过概述在各种环境中进行部署时相应解决方案的形成过程,对本文中的内容进行了总体介绍。
现有的场景
图 1 中的图表从运行时的角度,清楚地说明了本系列文章第 1 部分中所完成的工作。
图 1. 共存于同一台服务器中
本文介绍如何在两种运行时拓扑中增强和部署现有的应用程序,并对其进行测试。
高级场景 1
在这个场景中,您将向现有的应用程序中添加 index.jsp 以帮助进行测试。将该解决方案部署于由两台现有的服务器组成的 WebSphere Process Server V6 单元:server1 和 server2。然后,将 InvokeEcho SCA 模块部署于这两台服务器,同时由 server2 承载 Echo EJB 服务。
图 2. 共存于不同服务器的相同单元中
高级场景 2
在高级场景 2 中,将 Echo EJB 服务移动到了另一个 WebSphere 单元(WebSphere Application Server V5.1 单元),这是高级场景 1 和本场景之间最大的区别。
图 3. 存在于不同服务器的不同单元中
增强现有的应用程序
设置工作区
- 启动 WebSphere Integration Developer。打开新工作区并关闭欢迎屏幕。
- 右键单击Business Integration 视图中的任何位置,然后选择 Import 以导入已下载的 Project Interchange。
- 选择 Project Interchange 并单击 Next。
图 4. 导入 Project Interchange
- 选择已下载的文件 $Download_root/importEJB_PI.zip,然后单击 Select All 和 Finish。
图 5. 选择所需的项目
检查现有的构件
- 在完成导入工作后,切换到 Java 透视图。请注意,已导入了下列项目,参见图 6。
图 6. 导入的项目
- 切换到 Business Integration 透视图并展开 InvokeEcho 项目。在 Assembly Editor 中,选择并双击以打开模块 InvokeEcho,参见图 7。
图 7. InvokeEcho 模块细节
- 将这个图表与前一篇文章中所使用的图表进行比较。请注意,我们添加了一项独立 引用。这样做的原因在于,当在 WebSphere Process Server 环境中进行测试时,我们需要一种方法来调用 SCA 模块。有关添加和使用独立引用的详细信息,请参见本文的“参考资料”部分。
- 在该图表中,选择 Stand-alone References。从 Properties 视图中,展开 References 并选择 InvokeEchoInterfacePartner 以检查细节信息。请注意,已将独立引用的名称设置为 InvokeEchoInterfacePartner。这是稍后将在客户端 JSP Java 代码中使用的名称。
图 8. 引用的细节
- 切换到 J2EE 透视图并展开 Dynamic Web Projects => InvokeEchoWeb => WebContent。请注意,我们还添加了一个 index.jsp 文件。
图 9. SCA 调用程序 JSP
- 双击 index.jsp。当 JSP 编辑器打开后,选择 Source 选项卡并检查下面的代码,参见图 10。
图 10. SCA 调用程序 JSP 细节
测试应用程序
- 在 Server 视图中,右键单击 WebSphere Process Server V6.0 并在上下文菜单中选择 Add and remove projects。
- 在下面的窗口中,将应用程序 Echo 和 InvokeEchoApp 添加到配置项目列表,然后单击 Finish。
图 11. 添加项目
- 在上下文菜单中右键单击 index.jsp 并选择 Run => Run on Server。
- 在页面加载之后,在文本字段中输入相应的字符串,然后单击 Submit。您将在该按钮下方看到其响应。如果您看到了这个结果,那么您成功地完成了从 index.jsp 到 InvokeEcho SCA 组件的往返调用,而后者将调用 Echo EJB。
图 12. 测试模块
修改 JNDI 名称
- 在 Business Integration 透视图中,再次在组装图中打开 InvokeEcho 模块,在 Properties 视图中选择 EchoEJB 组件,然后选择 Binding 选项卡。您应该可以看到与图 13 中所示相同的结果。
图 13. 原始 JNDI 名称
- 将 JNDI 名称从 ejb/com/ibm/issw/poc/invokeejb/EchoHome 更改为 cell/persistent/echo,这是我们稍后配置命名空间绑定时使用的名称。
图 14. 修改的 JNDI 名称
- 保存更改并关闭 Assembly Editor。


|
回页首 |
|
导出应用程序
我们的解决方案由下面两个部分组成:一部分用于 SCA 模块,而另一部分用于 EJB 服务。
导出 SCA 模块
要导出 SCA 模块,请执行下列操作:
- 在 Business Integration 透视图中,选择 InvokeEcho 模块,右键单击并从上下文菜单中选择 Export 。
- 在导出向导中,确保选择了 Integration Module 并单击 Next。
图 15. 导出模块 1
- 选择要部署于 WebSphere Process Server 的 InvokeEcho 模块,参见图 16。
图 16. 导出模块 2
- 浏览至目标目录(请参见图 17)。选择 InvokeEchoApp.ear 作为目标文件名。单击 Finish。
图 17. 导出模块 3
导出 EJB
- 在 J2EE 透视图中,展开 Enterprise Applications,选择 Echo,并右键单击以选择 Export...=> EAR File。
图 18. 导出 EJB 1
- 选择目标目录并选择 Echo.ear 作为目标文件名。单击 Finish。
图 19. 导出 EJB 2


|
回页首 |
|
将该应用程序部署到高级场景 1
准备服务器
- 启动 WebSphere Process Server Deployment Manager 和 Node Agent。
- 打开管理控制台。这个场景使用:http://192.168.142.133:9060/ibm/console。
- 登录并展开 Servers => Application Servers。请对照图 20 检查您的结果。
图 20. 相同单元中的两台服务器
在高级场景 1 中,WebSphere Process Server 单元中有两台服务器,关于其拓扑结构,请参见图 2。我们将 InvokeEchoApp.ear 部署到 server1,而将 Echo.ear 部署到 server2。
安装 InvokeEcho 模块
- 在本地文件系统进行浏览以找到在上一步中导出的 InvokeEchoApp.ear。
图 21. 安装模块 1
- 选择安装该应用程序的目标服务器 server1,并单击 Apply。单击 Finish。
图 22. 安装模块 2
安装 Echo EJB
- 按照一般过程安装 Echo.ear 文件。请确保选择 server2 作为目标服务器。
图 23. 安装 EJB 1
- 单击 Next。请注意,EJB 的 JNDI 名称为 com/ibm/issw/poc/invokeejb/EchoHome。
图 24. 安装 EJB 2
配置命名空间绑定
- 在 WebSphere 管理控制台(左边的导航),展开 Environment => Naming,并单击 Name Space Bindings。
图 25. 配置命名空间 1
- 选择 Cell 范围并单击 New。
- 选择 EJB 作为绑定类型并单击 Next。
图 26. 配置命名空间 2
- 在字段“Name in Naming Space”中指定 echo,它将指向我们部署于 server2 的 Echo EJB。另请注意,完整的 JNDI 名称为 ejb/com/ibm/issw/poc/invokeejb/EchoHome,它与安装 Echo EJB 中指定的 EJB JNDI 名称相匹配。
图 27. 配置命名空间 3
- 使用 cell/persistent/echo,这正是我们在 EJB 导入组件中定义单元级名称绑定 echo 所引用的内容。
图 28. 配置命名空间 4
测试高级场景 1
您需要重新启动这两台服务器,以使命名空间更改生效。在服务器启动之后,将浏览器指向 index.jsp。本文使用:http://192.168.142.133:9080/InvokeEchoWeb/index.jsp
在测试字段中输入相应的字符串,然后单击 Submit。您应该可以从浏览器中看到输出结果。
图 29. 一个单元测试中的两台服务器
下面是 server1 的输出,指示 InvokeEcho SCA 模块正在运行:
清单 1. server1 的示例输出
[3/14/06 0:07:25:438 EST] 00000070 ApplicationMg A WSVR0221I: Application started:
InvokeEchoApp
[3/14/06 0:07:53:047 EST] 00000060 ServletWrappe A SRVE0242I: [/index.jsp]:
Initialization successful.
[3/14/06 0:07:53:516 EST] 00000063 WebContainer E SRVE0017W:
A WebGroup/Virtual Host to handle /favicon.ico has not been defined.
[3/14/06 0:08:08:969 EST] 00000060 SystemOut O Inside SCA Componnent InvokeEchoImpl-->callEcho2()
[3/14/06 0:08:10:172 EST] 00000060 SystemOut O Inside SCA Componnet InvokeEchoImpl,
EJB response is Hello, Peter
|
下面是 server2 的输出,指示调用了 Echo EJB 服务:
清单 2. server2 的示例输出
[3/14/06 0:07:05:141 EST] 0000003b SibMessage I [:] CWSID0020I:
The messaging engine configuration reload is complete.
[3/14/06 0:08:10:141 EST] 00000069 SystemOut O Inside EJB EchoBean -->echoSimple()
|


|
回页首 |
|
将该应用程序部署到高级场景 2
在这个场景中,在 WebSphere Application Server V5.1 中对 Echo.ear 进行了移动、安装和测试。
准备 WebSphere Application Server V5.1 环境
- 在 WebSphere Application Server V5.1 安装中,启动 server1。
- 打开管理控制台。对于本文,我们使用:http://192.168.142.1:9090/admin.
- 在左边的导航树中,展开 Applications 并选择 Install Application。按照正常的程序来安装 Echo.ear。请确保选中了 Deploy EJB,请参见图 30。
图 30. 在 WebSphere Application Server V5.1 中部署 EJB
配置命名空间绑定
现在,您需要重新配置命名空间绑定配置。
- 打开 WebSphere Process Server V6 管理控制台,本文使用:http://192.168.142.133:9060/ibm/console.
- 在 WebSphere Process Server 管理控制台(左边的导航)中,展开 Environment => Naming 并单击 Name Space Binding。删除在高级场景 1 中配置的命名空间绑定。之所以需要这样做是因为,高级场景 2 将使用相同的命名空间标识符 echo。
- 在保存了更改后,单击 New。
图 31. 配置命名空间 1
- 选择 CORBA 作为绑定类型,并单击 Next。
图 32. 配置命名空间 2
- 在“Name in Name Space”字段中指定 echo,但在 Corbaname URL 字段中使用 corbaname:iiop:192.168.142.1:2809/NameServiceServerRoot#ejb/com/ibm/issw/poc/invokeejb/EchoHome。这里,我们指向了 WebSphere V5.1 服务器中运行的 EJB。您可以使用这种类型的连接字符串与任何支持 corbaname URL 的应用服务器通信。
图 33. 配置命名空间 3
- 在摘要页面中,单击 Next 和 Finish。您将看到下面的单元级名称绑定回显,但这一次,它是 CORBA 类型的。要访问该资源,可以使用 cell/persistent/echo,这正是在 EJB 导入组件中所进行的引用。
图 34. 配置命名空间 4
测试高级场景 2
现在重新进行测试。启动服务器,将浏览器指向 index.jsp 文件(与在高级场景 1 中所完成的工作相同)。输入任何字符串。参见图 35 查看其结果。
图 35. 两个单元测试
下面是 WebSphere V6 server1 的输出,它表示 InvokeEcho SCA 模块正在运行:
清单 3. WebSphere 6 server1 的示例输出
[3/20/06 12:45:39:891 EST] 00000052 ServletWrappe A SRVE0242I: [/index.jsp]:
Initialization successful.
[3/20/06 12:45:40:141 EST] 00000052 WebContainer E SRVE0017W:
A WebGroup/Virtual Host to handle /favicon.ico has not been defined.
[3/20/06 12:46:21:969 EST] 00000052 SystemOut O Inside SCA Componnent InvokeEchoImpl-->callEcho2()
[3/20/06 12:48:15:938 EST] 00000052 SystemOut O Inside SCA Componnet InvokeEchoImpl,
EJB response is Hello, Ayden
|
下面是 WebSphere V5.1 server1 的输出,指示调用了 Echo EJB 服务:
清单 4. WebSphere 5.1 server1 的示例输出
[3/20/06 11:50:46:983 EST] 5d1a6e3e WebGroup I SRVE0180I:
[adminconsole] [/admin]
[Servlet.LOG]: /secure/layouts/customLayout.jsp: init
[3/20/06 11:50:47:184 EST] 5d1a6e3e WebGroup I SRVE0180I:
[adminconsole] [/admin] [Servlet.LOG]:
/com.ibm.ws.console.servermanagement/serverindex/namedEndPoint.jsp: init
[3/20/06 12:50:12:791 EST] 73e1ee39 SystemOut O inside echoSimple
|


|
回页首 |
|
结束语
祝贺您,现在您已经成功地为集成 EJB 服务配置并测试了两个高级场景。正如您所看到的,命名空间绑定是一种指定 JNDI 名称的灵活方式,独立于部署的拓扑结构。在我们的 EJB 导入组件中,使用了相同的 JNDI 名称 cell/persistent/echo,并且当先将 Echo EJB 部署到 WebSphere Process Server V6 服务器,然后部署到 WebSphere Application Server V5.1 服务器时,不需要对其进行更改。
命名空间绑定和 corbaname URL 提供了一种完美的解决方案,用以集成运行于不同版本的 WebSphere 或第三方应用服务器中现有的 EJB 服务。


|
回页首 |
|
下载
| 描述 | 名字 | 大小 | 下载方法 |
| code sample |
0605_xu-importEJB_PI.zip |
100KB |
FTP | HTTP |
| code sample |
0605_xu-echo_invoke_ear.zip |
72KB |
FTP | HTTP |
|