使用 WebSphere Adapters 中的 WebSphere ESB 中介流动态地调用企业信息系统

本文将介绍如何使用 WebSphere Adapters 和 WebSphere ESB 中介流动态地调用企业信息系统 (EIS),以及如何将此模型应用于各种业务场景。

Jeffrey I S Dare, 软件工程师, IBM

Jeffrey Dare 的照片Jeffrey I S Dare 是位于印度班加罗尔的 IBM 印度软件实验室的一名软件工程师。他有 3 年的 WebSphere Adapters 研究经验,目前在研究基于文件的资源适配器和 ECM 资源适配器的支持和开发。



Ramya Rajendiran, 资深软件工程师, IBM

Ramya Rajendiran 的照片Ramya Rajendiran 是位于印度班加罗尔的 IBM 印度软件实验室的一名软件工程师。她有 5 年的 WebSphere Commerce 和 WebSphere Adapters 研究经验,目前在研究基于文件的资源适配器的支持和开发。她撰写了 IBM 红皮书 “WebSphere Commerce 业务线工具优化”。



Ramkumar Ramalingam, 软件开发人员, IBM

Ramkumar RamalingamRamkumar Ramalingam IBM 位于印度班加罗尔市的软件实验室的资深软件工程师。他致力于 Apache Tuscany 并且是 Apache Tuscany Project Management Committee 的成员。他还是 OASIS SCA Java Specification Community 的成员。



2012 年 12 月 20 日

简介

IBM® WebSphere® Adapter 家族包含各种基于 JCA 1.5 标准的技术和应用程序适配器。这些适配器使集成开发人员能够将各种运行时(比如 WebSphere Application Server、WebSphere ESB 和 IBM Process Manager)无缝地与各种 EIS(比如 SAP、Siebel、Oracle、PeopleSoft、JD Edwards、Lotus Domino、JDBC 数据库、FTP/FTPS/SFTP 协议、平面文件系统和电子邮件服务器)集成在一起。

WebSphere Adapters 用在许多复杂业务系统的业务集成逻辑的核心位置。它们的出站功能会在业务流需要调用某些 EIS 功能时使用。在许多场景中,这些适配器必须基于仅在运行时知道的路由条件(比如业务数据或条件)动态地连接到不同的 EIS 实例。在业务逻辑要求 WebSphere Adapter 用户的应用程序在运行时动态调用不同 EIS 的时候,WebSphere Adapter 用户会面临一些挑战,本文提供了这些挑战的一个解决方案。该解决方案在一种 “无编码” 方法中使用 WebSphere ESB 中介流,这样做减少了复杂性、重复和维护工作。

动态调用的业务场景

以下是对 EIS 的动态调用的一些用例:

  • 对于所有 WebSphere Adapter:当 EIS 没有提供负载平衡且客户希望实现基于适配器的负载平衡时使用。
  • 对于所有 WebSphere Adapter:当一个 EIS 实例关闭且应用程序需要动态地故障转移到一个不同的 EIS 实例时使用。
  • 对于 WebSphere Adapter for Email:当使用该适配器的客户应用程序希望基于某个值而将传入的电子邮件转发给特定的邮件服务器时使用。WebSphere JCA Adapter 中没有提供此功能。
  • 对于 WebSphere Adapter for FTP:当中介流需要基于所登录的用户动态连接到不同 FTP 服务器时使用。

Websphere JCA Adapter 的限制

目前的 WebSphere Adapters 框架不允许动态连接到不同 EIS 实例的适配器配置。JCA 规范也没有明确支持动态连接。因此,WebSphere Adapters 很难提供此特性,而且在上面的 “动态调用业务场景” 下列出的用例目前无法以直观的方式实现。相反,用户必须开发和部署多个适配器实例,这带来了以下难题:

  • 更高的资产和代码重复率
  • 更高的业务逻辑复杂性
  • 更长的开发时间
  • 更长的维护时间

使用 WebSphere ESB 的动态调用

WebSphere ESB 支持通过动态覆盖静态定义的端点或使用目标导入来动态调用,从而重新路由消息。WebSphere ESB 还支持动态重定向响应消息。当开发并部署一个中介模块时,通过该模块的消息流使用静态信息。可以使用 WebSphere Integration Developer 输入固定的值来描述导入、绑定和目标。经过中介模块的消息然后可使用这些值。

对于一些应用程序,您可在运行时覆盖或更改一些静态值。通过覆盖为某个端点地址指定的值,可以动态完成此操作,或者可以选择一个新的目标导入。无论如何,消息流都会依据消息中的信息而进行更改。有关的更多信息,请参阅 WebSphere ESB 信息中心内的 动态调用。本文将介绍如何使用 WebSphere Adapters 和 WebSphere ESB 中介流的动态调用特性动态地调用 EIS。

先决条件

  • IBM Integration Developer
  • 中介流的实用知识
  • WebSphere Adapters 的实用知识

假设

  • 使用了 WebSphere Adapter for FTP 及其 Create 操作。
  • WebSphere Adapter for FTP 部署在 WebSphere Application Server 的节点级别上。
  • 定义了不同的托管连接工厂,每个工厂都通过其 JNDI 得到引用。

动态创新步骤

以下步骤为一个出站 Create 操作配置 WebSphere Adapter for FTP,但它们也适用于任何出站适配器配置。在正常情况下,FTPImport 仅可使用在其 Managed Connection Factory (MCF) 中定义的一组属性。以下步骤展示了如何将同一个 FTPImport 用于不同的属性集来动态连接到不同 FTP 服务器。

  1. 在面板中拖放 FTP Outbound Adapter,创建一个 FTPImport using the External Service 向导。选择 FTPImport,以便配置一个 Create 操作并导入需要的属性:
    图 1. 在向导中创建 FTPImport
    在向导中创建 FTPImport
  2. 在面板上,单击 Components,然后将 Mediation Flow 组件拖放到装配图上:
    图 2. 创建 Mediation Flow 组件
    创建 Mediation Flow 组件
  3. 现在您需要一个新业务对象 (BO),它接受托管链接工厂 (MCF) 的 JNDI 名称。创建接受 FTP 出站所需的所有属性以及 MCF 的 JNDI 名称的 BO:
    图 3. 创建一个新业务对象
    创建一个新业务对象
  4. 创建一个新接口并添加一个 Request and Response 操作,该操作拥有上一步中创建的 BO:
    图 4. 创建一个 Request and Response 操作
    创建一个 Request and Response 操作
  5. 将此接口添加到中介流中,并将它连接到 FTPImport
    图 5. 将中介流连接到 FTPImport
    将中介流连接到 FTPImport
  6. 双击 Mediation Flow 并单击 Operation Map,为这两个接口的操作建立映射:
    • 您在第 4 步中创建的输入接口
    • FTP Adapter 创建的接口
    图 6. 映射两个接口的操作
    映射两个接口的操作
  7. 第 6 步在两个操作之间创建一个 input_map,如图 7 所示:
    图 7. 两个接口的中介映射
    两个接口的中介映射
  8. 双击 input_map,根据您的业务需求映射所有需要的字段:
    单击此处查看大图。)
    图 8. 映射所有需要的字段
    映射所有需要的字段
  9. 要动态调用 EIS,只需映射 SMOHeader 中的目标地址字段,它可在树结构的 smo/headers/SMOHeader/Target/address 路径中找到:
    单击此处查看大图。)
    图 9. 映射目标地址字段
    映射目标地址字段
  10. 基于 MCF_JNDI 中提供的输入,请求将使用该 MCF 执行。
  11. 为 MCF n 的 JNDI 提供以下 URI 格式:jca:jndi:<JNDI of the MCF>

示例

以下示例演示了如何在出站请求中使用 MCF 的 JNDI。在这些示例中,借助一个已配置好的 FTPImport,您可以通过出站请求动态地调用不同的 EIS。

示例 1

jca:jndi:jndi/ftp1 使用 FTPImport 引用了 MCF 的出站 Create 请求:

图 10. 示例 1 的请求
示例 1 的请求
图 11. 示例 1 的响应
示例 1 的响应

示例 2

jca:jndi:jndi/ftp2 使用同一个 FTPImport 来引用 MCF 的出站 Create 请求:

图 12. 示例 2 的请求
示例 2 的请求
图 13. 示例 2 的响应
示例 2 的响应

上面两个示例表明,只使用一个 FTPImport,就可以基于两个不同的 MCF jndi/ftp1jndi/ftp2 将请求发送到两个不同的 FTP 服务器。

结束语

在本文中,我们学习了如何在运行时使用 WebSphere Adapters 和 WebSphere ESB 中介流动态地调用不同 EIS 的技术和解决方案方法。这种 “无编码” 方法使您能够解决上面的 动态调用业务场景 下列出的用例。

参考资料

学习

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=852550
ArticleTitle=使用 WebSphere Adapters 中的 WebSphere ESB 中介流动态地调用企业信息系统
publish-date=12202012