UML软件工程组织

Java 应用程序的旧集成技术

如何重用 Java 应用程序内部的旧投资

Scott W. Ambler
总裁,Ronin International
2000 年 11 月 16 日(摘自IBM中国)

通过遵循这里描述的四种公共集成策略中的一种或多种,可以将 Java、J2EE 和基于 EJB 的应用程序与现有的旧系统方便地集成起来。

几乎很少项目团队有从头开始(通常指绿地开发)的好处。作为替代,问题的冷酷和艰难之处是在开发新的应用程序时大多数 Java 项目团队需要考虑现有的旧系统。或许您需要访问现有的库存控制系统、旧的客户数据库或基于大型机的安全性访问控制服务。如果这样的话,您就有旧系统的集成问题,通常称为“企业应用集成 (EAI)”问题。给您的团队带来的好处是,如果旧系统设计得合理,那么您就可以利用大量的现有功能。然而,如果旧系统设计得不合理,或者设计时根本没有考虑到集成,那么您将发现集成工作是项目的重要部分。当没有足够的文档或者当旧系统的所有者不愿意与您的团队合作时(永远不要低估政策对项目的作用),这是特别确实的。

D.S. Linthicum 在 Enterprise Application Integration 中推荐了四种旧系统的集成方法:

  • 数据级集成
    从 Java 应用程序的观点看,这种类型的集成集中在通过会话 bean 或实体 bean 访问旧数据库或文件。它还包括对由旧系统产生的,用于数据访问特殊目的的新近开发的数据供给的访问。XML 通常用于这种集成技术,因为 XML 是共享数据的平台无关方法。数据级集成的优点是,可以相当直接且迅速地实现。缺点包括增加的应用程序之间的数据耦合,从而增加您的维护负担;不能访问重要的行为,如数据验证和关键商业规则;以及需要为设计很差的数据编写重要的数据清洁/格式化代码。
  • 应用程序接口集成
    使用这种方法,您可以利用由应用程序暴露的应用程序编程接口(API)来访问旧系统封装的数据和功能。应用程序接口集成的优点是,这种方法在业界中相当标准;许多软件包(如 SAP 和 PeopleSoft)都包括可以经由 Java Native Interface (JNI) 代码访问的 C-API。 主要缺点是,在您组织内部开发的软件很少有已定义的 API; API 的范围可能有限并且不能提供您需要的行为(或以您需要它的方式);实际上,API 通常是面向功能的,而不是面向对象的。
  • 方法级集成
    使用这种方法,可将商业逻辑作为软件可调用的共享的方法或操作集合共享。例如,更新客户数据、验证信用卡交易或将钱存入银行帐户等公共操作可以在所有应用程序都有权访问的公共资源库或可重用的框架中使用。方法级集成的优点是,它通常提供对公共商业功能的细致访问; 大范围的应用程序(包括 Java 和非 Java)都可以访问这些操作;调用方法是直接的。缺点是,如果每个方法中都没有有效的支架,那么公共方法的细致特性会难以支持事务或支持公共技术性服务,如安全性访问控制。
  • 用户界面级集成
    这种技术集中在通过用户界面访问现有的应用程序,这种过程称为屏幕剪贴,在其中模仿用户击键来实现与旧软件的交互。 屏幕剪贴是基于 Web 的聚集器站点(例如 Vertical One)使用的公共技术,以显示金融或其它类型信息的个性化视图。其优点是,这是旧集成经过时间测试且通用的方法,许多用户界面测试工具(如 Mercury Interactive 的 WinRunner 或 Rational Corporation 的 SQA Suite)都使用它。其主要缺点是,这种方法可能很慢:需要等待旧的应用程序绘制您正在剪贴的屏幕,而且对旧的用户界面所做的任何更改都需要对集成代码进行更改。

幸运的是,简单的旧集成 — 尤其当设计旧系统就考虑到集成时 — 通常可以通过中间件产品处理,如 Tibco Inc 的 ActiveEnterprise 产器线、IBM MQSeries 产品家族和 Iona 的 iPortal Integration Server。然而,当集成工作证实要比由组织的中间件基础处理的事情更复杂时,您会发现需要编写您自己的集成代码,通常称为 (wrapper) 代码。 表 1 列出了可以在 Java 代码中应用的各种选项,描述如何使用每种技术将 Java 应用程序与旧系统集成。

表 1. Java 技术选项

技术 推荐使用
RMI-IIOP 旧系统和服务的同步、同级访问。支持方法级 EAI。
JDBC 访问旧数据库。支持数据级 EAI。
JNI 封装 C-API 以访问旧系统和服务。支持应用级、方法级和用户界面级(经由屏幕剪贴 API)EAI。
JMS 与旧系统和服务的异步、基于消息的通信。支持应用级和方法级 EAI。

参考资料
可以在 VerticalOne 上查看屏幕剪贴的示例。

通常可以使用下列现成的中间件产品完成简单的旧集成:

 



版权所有:UML软件工程组织