将 EJB 服务与 WebSphere Process Server 集成

发表于:2007-05-24来源:作者:点击数: 标签:ServeProcesswebsphereejb服务
本文介绍如何使用 IBM WebSphere Process Server Version 6 和 IBM WebSphere Integration Developer Version 6 来在不对其进行更改的情况下集成现有 J2EE 应用程序。 引言 IBM WebSphere Process Server 是使用 IBM WebSphere Integration Developer 开发 的
本文介绍如何使用 IBM WebSphere Process Server Version 6 和 IBM WebSphere Integration Developer Version 6 来在不对其进行更改的情况下集成现有 J2EE 应用程序。

引言

IBM® WebSphere® Process Server 是使用 IBM WebSphere Integration Developer 开发的业务集成解决方案的运行时平台。公司 IT 基础设施的现有很多业务功能均基于 Java™ 2 Enterprise Edition (J2EE) 的 无状态 Enterprise Java Bean (EJB) 编写的。设计和实现新业务流程集成应用程序时,能够方便地利用和集成这些功能非常重要。

概略关系图

本文中使用的方案相当简单。它由一个服务组件体系结构(Service Component Architecture,SCA)模块构成,该模块包含一个 Java 组件,而该 Java 组件将使用导入的 EJB 服务。


图 1. 模块概况
模块概况

必备软件

需要安装以下软件:

  • WebSphere Integration Developer V6
  • WebSphere Process Server V6 测试环境

本文假定您具有一定的 J2EE 知识,以前曾使用过 WebSphere Studio Application Developer 或 Rational Application Developer。要了解有关这些产品的更多信息,请访问 developerWorks

配置

在这一部分,我们将开发一个示例 EJB 应用程序和一个使用该 EJB 服务的 SCA 模块。

可以首先创建企业应用程序、包和 EJB 会话。

  1. 创建名为 Echo 的企业应用程序,该应用程序包含一个 EJB 模块 EchoEJB

  2. 创建名为 com.ibm.issw.poc.invokeejb 的包。

  3. 创建无状态 EJB 会话,将其命名为 Bean Echo。



    图 2. 创建 EJB
    创建 EJB

  4. 创建一个简单的方法,将其命名为 echoSimple,并将其提升为远程接口:

    public String echoSimple(String name){
                    System.out.println("inside echoSimple");
                    return "Hello, " + name;
                    }

  5. 打开 ejb 部署描述符,并留意一下 EJB 的缺省 JNDI 名称:

    ejb/com/ibm/issw/poc/invokeejb/EchoHome



    图 3. EJB JNDI 名称
    EJB JNDI 名称

  6. 创建将稍后在 SCA 模块中使用的 EJB 客户端项目和 jar。

  7. 单击右键,并选择 EchoEJB => EJB Client Jar => Create EJB Client Project,然后在 name 字段中输入 EchoEJBClient



    图 4. EJB 客户端
    EJB 客户端

  8. 运行并测试 EJB 应用程序(请参见图 5)。



    图 5. 测试 EJB
    测试 EJB

现在已经创建了 EJB,接下来将对其进行集成。

创建 EJB 组件

要将 EJB 集成到 WebSphere Process Server SCA 组件中,请执行以下步骤:

  1. 创建名为 InvokeEcho 的模块。

  2. 从 Dependencies editor 选择 EchoEJBClient 作为依赖 Java 项目,并单击 Add,以将 EchoEJBCLient 作为依赖 Java 项目添加。



    图 6. 添加依赖关系
    添加依赖关系

    此时务必添加模块依赖关系。稍后添加接口时,向导才能够找到远程 EJB 接口。

  3. 从 Assembly editor 中打开模块 InvokeEcho,在画布上添加一个 Import 组件。将名称更改为 EchoEJB



    图 7. 添加 Import 组件
    添加 Import 组件

  4. 为导入添加接口:

    1. 单击 Add Interface 图标。

    2. 在随即出现的窗口中选择 Show Java

    3. 在 Filter by interface 字段输入 echo

    4. 从 Matching interfaces 中选择 Echo。此接口来自项目 /EchoEJBClient/ejbModule(请参阅图 8)。



      图 8. 为导入添加接口
      为导入添加接口

  5. 单击 Ok 并保存模块关系图。



    图 9. 带接口的导入
    带接口的导入

  6. 生成会话 EJB 绑定。

    1. 右键单击 EchoEJB 导入,并选择 Generate Binding => Stateless Session Bean Binding



      图 10. 添加绑定
      添加绑定

    2. 请注意导入中的图标变化(请参阅图 11)。



      图 11. 带接口绑定的导入
      带接口绑定的导入

    3. 选择 Properties 视图,然后选择 Binding 选项卡。可以看到 JNDI name 字段现在已填充(请参阅图 12)。



      图 12. 指定绑定的 JNDI 名称
      指定绑定的 JNDI 名称

创建 Java 组件

要创建 Java 组件,请执行以下步骤:

  1. 将 Java 组件拖放到 assembly 画布上,并将名称改为 InvokeEcho(请参阅图 13)。



    图 13. 添加 Java 组件
    添加 Java 组件

  2. 创建名为 InvokeEchoInterface 的接口,其中包含一个单向操作 callEcho 和一个输入参数:



    图 14. 创建接口
    创建接口

  3. 选择 Java 组件,并为其添加一个接口 InvokeEchoInterface

  4. 将 InvokeEcho 和 EchoEJB 连接到一起(请参阅图 15)。



    图 15. 连接 Java 并导入组件
    连接 Java 并导入组件

    请注意已生成了引用 EchoPartner。我们将在 Java 组件实现中使用它(请参阅图 16)。



    图 16. 合作伙伴引用
    合作伙伴引用

  5. 选择并右键单击 Java 组件,然后生成缺省 Java 实现。当实现打开后,使用以下代码替换 callEcho 方法:

            try {
                    System.out.println("in callEcho");
                    // Create an instance of the ServiceManager
                    ServiceManager serviceManager = new ServiceManager();
                    Echo echo= (Echo)serviceManager.locateService("EchoPartner");
                    String result = echo.echoSimple(name);
                    System.out.println("called imported EJB, and response is " + result);
                    } catch (Exception e) {
                    e.printStackTrace();
                    }

运行并测试方案

要测试方案,请执行以下步骤:

  1. 右键单击 InvokeEcho 并选择 Test Component

  2. 在测试配置中,删除 EchoEJB 的模拟器,因为我们希望调用实际的 EJB 实现。

  3. 在 name 字段中输入一个值,然后单击 Continue



    图 17. 组件测试 1
    组件测试 1

  4. 请注意是否收到预期结果。



    图 18. 组件测试 2
    组件测试 2

    请注意 System.out 输出的结果。



    图 19. 组件测试 3
    组件测试 3

祝贺您现在已经成功从 SCA 组件 InvokeEcho 中导入 Echo EJB 并进行了调用。在此方案中,SCA 模块和 EJB 服务在同一服务器上运行。





回页首


结束语

本文帮助您实现了集成 EJB 服务的 WebSphere Process Server 解决方案。正如您所看到的,从 SCA 组件使用 EJB 服务非常容易。采用这种方式重用基于 EJB 的服务可为 WebSphere Process Server 等集成产品的应用带来大量机会。

致谢

作者希望感谢 Sam Kaipa 对本文所做的审阅工作。

原文转自:http://www.ltesting.net