中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> IBM专区 > WebSphere > WebSphere综合
将 EJB 服务与 WebSphere Process Server 集成,第 2 部分: 集成在 WebSphere Process Server 和 WebSpher…
作者:Peter Y. Xu 时间:2006-08-27 02:21 出处:IBM 责编:月夜寒箫
              摘要:将 EJB 服务与 WebSphere Process Server 集成,第 2 部分: 集成在 WebSphere Process Server 和 WebSphere Application Server 中运行的 EJB 的高级场景
本文提供了一些高级场景,用于通过在 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. 存在于不同服务器的不同单元中
存在于不同服务器的不同单元中

增强现有的应用程序


设置工作区


  1. 启动 WebSphere Integration Developer。打开新工作区并关闭欢迎屏幕。
  2. 右键单击Business Integration 视图中的任何位置,然后选择 Import 以导入已下载的 Project Interchange。
  3. 选择 Project Interchange 并单击 Next



    图 4. 导入 Project Interchange
    导入 Project Interchange



  4. 选择已下载的文件 $Download_root/importEJB_PI.zip,然后单击 Select AllFinish



    图 5. 选择所需的项目
    选择所需的项目



检查现有的构件


  1. 在完成导入工作后,切换到 Java 透视图。请注意,已导入了下列项目,参见图 6。



    图 6. 导入的项目
    导入的项目



  2. 切换到 Business Integration 透视图并展开 InvokeEcho 项目。在 Assembly Editor 中,选择并双击以打开模块 InvokeEcho,参见图 7。



    图 7. InvokeEcho 模块细节
    invokeEcho 模块



  3. 将这个图表与前一篇文章中所使用的图表进行比较。请注意,我们添加了一项独立 引用。这样做的原因在于,当在 WebSphere Process Server 环境中进行测试时,我们需要一种方法来调用 SCA 模块。有关添加和使用独立引用的详细信息,请参见本文的“参考资料”部分。
  4. 在该图表中,选择 Stand-alone References。从 Properties 视图中,展开 References 并选择 InvokeEchoInterfacePartner 以检查细节信息。请注意,已将独立引用的名称设置为 InvokeEchoInterfacePartner。这是稍后将在客户端 JSP Java 代码中使用的名称。



    图 8. 引用的细节
    引用的细节



  5. 切换到 J2EE 透视图并展开 Dynamic Web Projects => InvokeEchoWeb => WebContent。请注意,我们还添加了一个 index.jsp 文件。



    图 9. SCA 调用程序 JSP
    SCA 调用程序 JSP



  6. 双击 index.jsp。当 JSP 编辑器打开后,选择 Source 选项卡并检查下面的代码,参见图 10。



    图 10. SCA 调用程序 JSP 细节
    SCA Jsp 客户端


测试应用程序


  1. 在 Server 视图中,右键单击 WebSphere Process Server V6.0 并在上下文菜单中选择 Add and remove projects
  2. 在下面的窗口中,将应用程序 EchoInvokeEchoApp 添加到配置项目列表,然后单击 Finish



    图 11. 添加项目
    添加项目



  3. 在上下文菜单中右键单击 index.jsp 并选择 Run => Run on Server

  4. 在页面加载之后,在文本字段中输入相应的字符串,然后单击 Submit。您将在该按钮下方看到其响应。如果您看到了这个结果,那么您成功地完成了从 index.jspInvokeEcho SCA 组件的往返调用,而后者将调用 Echo EJB。



    图 12. 测试模块
    测试模块



修改 JNDI 名称


  1. Business Integration 透视图中,再次在组装图中打开 InvokeEcho 模块,在 Properties 视图中选择 EchoEJB 组件,然后选择 Binding 选项卡。您应该可以看到与图 13 中所示相同的结果。



    图 13. 原始 JNDI 名称
    原始 JNDI 名称



  2. 将 JNDI 名称从 ejb/com/ibm/issw/poc/invokeejb/EchoHome 更改为 cell/persistent/echo,这是我们稍后配置命名空间绑定时使用的名称。



    图 14. 修改的 JNDI 名称
    目标 JNDI 名称



  3. 保存更改并关闭 Assembly Editor。




回页首


导出应用程序

我们的解决方案由下面两个部分组成:一部分用于 SCA 模块,而另一部分用于 EJB 服务。

导出 SCA 模块

要导出 SCA 模块,请执行下列操作:
  1. Business Integration 透视图中,选择 InvokeEcho 模块,右键单击并从上下文菜单中选择 Export

  2. 在导出向导中,确保选择了 Integration Module 并单击 Next



    图 15. 导出模块 1
    导出模块 1



  3. 选择要部署于 WebSphere Process Server 的 InvokeEcho 模块,参见图 16。



    图 16. 导出模块 2
    导出模块 2



  4. 浏览至目标目录(请参见图 17)。选择 InvokeEchoApp.ear 作为目标文件名。单击 Finish



    图 17. 导出模块 3
    导出模块 3



导出 EJB


  1. J2EE 透视图中,展开 Enterprise Applications,选择 Echo,并右键单击以选择 Export...=> EAR File



    图 18. 导出 EJB 1
    导出 EJB 1



  2. 选择目标目录并选择 Echo.ear 作为目标文件名。单击 Finish



    图 19. 导出 EJB 2
    导出 EJB 2







回页首


将该应用程序部署到高级场景 1


准备服务器


  1. 启动 WebSphere Process Server Deployment Manager 和 Node Agent。
  2. 打开管理控制台。这个场景使用:http://192.168.142.133:9060/ibm/console
  3. 登录并展开 Servers => Application Servers。请对照图 20 检查您的结果。



    图 20. 相同单元中的两台服务器
    相同单元中的两台服务器



在高级场景 1 中,WebSphere Process Server 单元中有两台服务器,关于其拓扑结构,请参见图 2。我们将 InvokeEchoApp.ear 部署到 server1,而将 Echo.ear 部署到 server2

安装 InvokeEcho 模块

  1. 在本地文件系统进行浏览以找到在上一步中导出的 InvokeEchoApp.ear



    图 21. 安装模块 1
    安装模块 1



  2. 选择安装该应用程序的目标服务器 server1,并单击 Apply。单击 Finish



    图 22. 安装模块 2
    安装模块 2



安装 Echo EJB


  1. 按照一般过程安装 Echo.ear 文件。请确保选择 server2 作为目标服务器。



    图 23. 安装 EJB 1
     安装 EJB 1



  2. 单击 Next。请注意,EJB 的 JNDI 名称为 com/ibm/issw/poc/invokeejb/EchoHome



    图 24. 安装 EJB 2
    安装 EJB 2



配置命名空间绑定

  1. 在 WebSphere 管理控制台(左边的导航),展开 Environment => Naming,并单击 Name Space Bindings



    图 25. 配置命名空间 1
    配置命名空间 1



  2. 选择 Cell 范围并单击 New
  3. 选择 EJB 作为绑定类型并单击 Next



    图 26. 配置命名空间 2
    配置命名空间 2



  4. 在字段“Name in Naming Space”中指定 echo,它将指向我们部署于 server2 的 Echo EJB。另请注意,完整的 JNDI 名称为 ejb/com/ibm/issw/poc/invokeejb/EchoHome,它与安装 Echo EJB 中指定的 EJB JNDI 名称相匹配。



    图 27. 配置命名空间 3
    配置命名空间 3



  5. 使用 cell/persistent/echo,这正是我们在 EJB 导入组件中定义单元级名称绑定 echo 所引用的内容。



    图 28. 配置命名空间 4
    配置命名空间 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 环境

  1. 在 WebSphere Application Server V5.1 安装中,启动 server1。

  2. 打开管理控制台。对于本文,我们使用:http://192.168.142.1:9090/admin.

  3. 在左边的导航树中,展开 Applications 并选择 Install Application。按照正常的程序来安装 Echo.ear。请确保选中了 Deploy EJB,请参见图 30。



    图 30. 在 WebSphere Application Server V5.1 中部署 EJB
    在 WebSphere Application Server V5.1 中部署 EJB



配置命名空间绑定

现在,您需要重新配置命名空间绑定配置。

  1. 打开 WebSphere Process Server V6 管理控制台,本文使用:http://192.168.142.133:9060/ibm/console.

  2. 在 WebSphere Process Server 管理控制台(左边的导航)中,展开 Environment => Naming 并单击 Name Space Binding。删除在高级场景 1 中配置的命名空间绑定。之所以需要这样做是因为,高级场景 2 将使用相同的命名空间标识符 echo

  3. 在保存了更改后,单击 New



    图 31. 配置命名空间 1
    配置命名空间 1



  4. 选择 CORBA 作为绑定类型,并单击 Next



    图 32. 配置命名空间 2
    配置命名空间 2



  5. 在“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
    配置命名空间 3



  6. 在摘要页面中,单击 NextFinish。您将看到下面的单元级名称绑定回显,但这一次,它是 CORBA 类型的。要访问该资源,可以使用 cell/persistent/echo,这正是在 EJB 导入组件中所进行的引用。



    图 34. 配置命名空间 4
    配置命名空间 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
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有