技术开发 频道

通过WPS和WID方便地使用Java构件


【IT168技术文档】

问题

    WebSphere Process Server 是基于服务组件体系结构 (SCA) 和服务数据对象 (SDO) 或业务对象 (BO) 创建和集成服务的平台。在大多数的情况下,在 IBM WebSphere Integration Developer 中使用服务组件、导出和导入时,将会处理与 XML 模式定义(XML Schema Definitions,XSD)组合的 Web 服务描述语言(Web Services Definition Language,WSDL)接口。我将这种类型称为 W 类型的服务。同时,在使用 SCA 和 SDO 之前,已经使用纯 Java 接口和 Java Bean 创建了许多资产和服务。我们将这种类型称为 J 类型的服务。

    显然,我们不希望使用新的 SCA 和 SDO 编程模型从头创建所有的服务。相反,我们希望尽可能多地重用 SCA 组件中现有的、基于 Java 的资产。示例是需要调用会话 EJB 的 SCA 组件。此调用需要在 WSDL 类型和 Java 类型之间进行转换。不过,您不能将引用类型为 WSDL 的组件直接连接到具有 Java 接口的另一个组件。这里似乎存在一个缺陷。

版本 6.0.2 之前

    在推出 WebSphere Process Server 和 WebSphere Integration Developer 的 6.0.2 版本之前,开发人员主要使用以下两种方法来处理此问题:

  1. 直接的解决方案就是编写 SCA 到 Java 的桥接。这需要手动创建中间 POJO(介绍的 WSDL 端口类型),它可以引用 J 类型的组件。但是您需要手动创建 WSDL 本身和对应于 Java Bean 参数的 BO。最重要和最耗时的一部分工作是反复编写 Java Bean 和数据对象的映射代码。

        此方法的问题是需要太多的手动步骤和自定义代码,这很容易出错。

  2. 另一种方法是利用 WebSphere Integration Developer 中的工具将现有 Java/EJB 资产公开为 Web 服务,这将自动获得 WSDL 接口。获得 SOAP Web 服务接口后,将其与 SCA 组件集成就非常容易了。

        此方法需要的手动步骤比其他方法少,但是将所有 Java 资产转换为 Web 服务可能不是一个实际的解决方案;这还会带来其他性能开销。

改进措拖

    上述两种方法都不令人十分满意。幸运的是,WebSphere Process Server 和 WebSphere Integration Developer 的 6.0.2 版本引入了在 W 类型的组件和现有 J 类型的接口构件之间进行自动操作和建立中介的功能:在 WebSphere Integration Developer 组装编辑器中拖放 EJB 或 Java 类时,从引用 WSDL 类型接口的组件桥接调用 Java 类型接口的辅助组件是自动生成的。在调用时,此映射组件将 BO 转换为 Java Bean,在 Java 服务上调用相应的方法,并在返回时将 Java Bean 转换回 BO。

    此自动功能还为使用相同基础 WebSphere java2WSDL (JAX-RPC 1.1) 工具的桥接组件和 BO 生成 WSDL。

    正如您看到的,这是对前一版本的重要改进,它通过更方便地集成 Java 和 J2EE 基础结构和使用自动生成的辅助组件极大地提高了工作效率。而且您再也不用执行低级数据转换和映射任务,使您能够更多地关注业务逻辑开发。

    下一部分将描述一种场景,演示如何轻松地使用这一功能。本文假设您对 WebSphere Process Server 编程模型非常了解。

0
相关文章