访问面向服务的体系结构中的企业信息系统

日期: 2008-05-19 作者:Ahmed Abbas 来源:TechTarget中国

  企业信息系统 (EIS) 是所有组织的重要 IT 资产。面向服务的体系结构 (SOA) 使得企业服务总线中的其他成员都可以使用 EIS。本文讨论了访问面向服务的体系结构中的 EIS 的基础技术,以及实现这种访问的工具和目标运行时。


  引言


  将基于早期技术的系统和更加现代的体系结构集成在一起,这种尝试由来已久。要增加异类环境、不同软件供应商和各种技术之间的互操作性,组织需要一种基于开放标准的集成方法,而不是供应商专用的技术。Java? 2 Enterprise Edition (J2EE) Connector Architecture(JCA 或 J2C)经过编译用来指定从 J2EE 组件访问企业信息系统 (EIS) 的机制。随后又发布了其他一些规范,以扩展 JCA 提供的特性。例如,Enterprise Metadata Discovery (EMD) 提供了动态发现特性。为了将 EIS 引入到 SOA 领域,在通过 JCA 资源适配器实现了 Service-Component Architecture (SCA) 之后,SCA 可以为通过 JCA 资源适配器访问 EIS 提供统一的访问机制。


  本文概述了 J2EE 环境中所使用的访问 EIS 的技术,并介绍了如何对这些技术进行扩展,以使之适用于面向服务的体系结构。我们将首先演练相关技术,然后讨论支持基于这些技术的实现的工具和运行时。具体内容包括在使用这些技术实现对 EIS 访问的过程中可能需要完成的各种任务以及工具和运行时。


  技术演练


  J2EE Connector Architecture


  J2EE Connector Architecture (JCA) 定义了支持 J2EE 组件以安全、可伸缩且支持事务的方式访问 EIS 的标准。JCA 资源适配器是 JCA 规范定义的连接器,可以实现可选的 Common Client Interface (CCI),以便为 J2EE 客户端访问 EIS 提供统一的 API。JCA 资源适配器由应用服务器承载,这些应用服务器通过 JCA 规范作为系统协议 定义的一组 Service Provider Interfaces (SPI) 来控制资源适配器的生命周期。


  JCA 资源适配器支持 J2EE 组件和 EIS 之间的双向通信:


  由作为访问 EIS 的客户端的J2EE 组件启动出站通信。


  EIS 启动入站通信以通知 J2EE 组件(也称为 Endpoint Application),这个入站通信预订了来自该 EIS 的所有事件。通过宿主应用服务器作为消息提供者 提供的消息传递基础结构,异步地执行入站通信。


  下图中介绍了两种可能的通信场景和 CCI 与系统协议的使用。使用资源适配器的 J2EE 组件可以与同一应用服务器上的适配器共存或进行远程操作。



  图 1. JCA 出站和入站场景
 
  JCA 规范为服务质量 (Quality of Service) 定义了多个协议,如安全性、工作负载管理和连接管理。


  Enterprise Metadata Discovery


  Enterprise Metadata Discovery (EMD) 是定义元数据发现和扩展 JCA 资源适配器功能的导入模型的规范。这个模型为工具和运行时提供了 Enterprise Application Integration (EAI) 框架:


  工具:JCA 资源适配器开发人员可以使用 EMD 和 EAI 工具来收集使用元数据发现功能的 EIS 数据和函数。通过使用规范定义和工具提供的元数据导入功能,要使用 JCA 资源适配器来定义服务接口(对于所选的 EIS 数据和函数)的开发人员可以使用这些发现的 EIS 数据和函数。


  运行时: 另一方面,EAI 运行时允许 J2EE 组件通过符合 EMD 规范的 JCA 资源适配器公开的 CCI 来使用针对 EIS 数据和函数生成的服务接口。


  很显然,EMD 通过提供探索 EIS 数据和函数的方式,减少了使用资源适配器所需的时间。它还生成了调用 CCI 所需的代码。如果没有该功能,就需要适配器使用者编写相应的代码。


  WebSphere 适配器


  IBM WebSphere? 适配器实现了 JCA 和 EMD。而且,它们扩展了编程和运行时模型,以充分利用 WebSphere 平台提供的扩展服务质量特性。



  图 2. WebSphere 适配器是基于开放标准的
 
  对于一般的集成任务,IBM 引入了两组适配器:


  应用程序适配器提供了到特定软件包的连接,如 PeopleSoft Enterprise、SAP Software 和 Siebel Business Applications。


  技术适配器提供了到使用特定技术或协议(如 JDBC、EJB 和 JMS)的系统的连接。


  每组适配器都包括了能够在 WebSphere 平台上独立获取、部署和配置的一组适配器。


  应用程序适配器和技术适配器都利用了开发 WebSphere 适配器的编程框架。ISV 和开发人员可以使用这种框架编写自定义适配器,以便处理没有提供现成的应用程序和技术适配器的特定集成情况。这样做可以减少大量的开发工作,因为它提供了一般 JCA 接口的实现并使得资源适配器开发人员能够把精力集中于特定的 EIS 集成代码。从工具的角度来看,WebSphere Adapter Toolkit 可用来简化基于 WebSphere 适配器技术的自定义资源适配器的开发。


  在本文余下的部分中,所有适用于 JCA 资源适配器的内容也都适用于 WebSphere 适配器,因为它们也是 JCA 实现。


  WebSphere 适配器和 WebSphere Business Integration Adapters 的比较


  WebSphere 适配器和 WebSphere Business Integration Adapters 是两种不同类型的适配器,均可以部署到 WebSphere 平台上以提供对 EIS 的访问。建议流程集成器、系统组装器和适配器开发人员使用和开发与 JCA 1.5 完全兼容的 WebSphere 适配器。WebSphere Business Integration Adapters 并不与 JCA 兼容,并且它们在应用服务器的 J2EE 容器之外运行。有关两种不同类型适配器之间差异的详细信息,请参阅参考资料部分。


  从 J2EE 组件调用 WebSphere 适配器


  WebSphere 适配器是可部署于支持 JCA 1.5 的 J2EE 应用服务器的 JCA 资源适配器。J2EE 组件(如 Web 模块和 EJB 模块)可以通过 CCI 使用 WebSphere 适配器,像使用任何其他 JCA 资源适配器一样。如果 JCA 资源适配器符合 EMD 规范,生成的服务接口(如 Enterprise Metadata Discovery 部分中所述)使用 CCI 连接到 EIS。此外,WebSphere 适配器(与所有的 JCA 资源适配器一样)可以在必要时向 J2EE 组件公开附加的 API。


  企业信息系统和面向服务的体系结构


  对于 SOA 而言,EIS 是向其他企业服务总线 (ESB) 成员提供功能的另一个系统。因此,总线成员应该能够使用一种统一的机制来调用 EIS 提供的函数并与 EIS 交换数据。以独立于实现的方式使用一种统一的机制来访问 EIS 和交换数据,这样,无论具体的实现技术和传输方式如何,都能够实现来自不同供应商的服务之间的互操作性。


  如前所述,JCA 和 EMD 提供了可靠的机制来访问 EIS 的数据和函数,同时还提供了来自于 J2EE 平台更多的服务质量功能。然而,因为 JCA 是 J2EE 规范的组成部分,这种调用机制仅面向 J2EE 组件(面向特定技术),即使该技术是一项开放的标准。


  服务组件体系结构


  服务组件体系结构 (SCA) 规范通过将服务抽象化为可通过接口 供其他服务组件使用的服务组件,从而提供了一种统一的方式来调用 ESB 中可用的服务:


  组件提供者对接口进行了定义,接口中列出了组件所提供的函数和用来调用这些函数的数据类型。


  组件使用者定义了引用 来指向需要调用的函数,无需指定目标组件、实现技术或者访问它们所使用的协议。


  组装时,应用程序组装器将引用连接 到相应的接口。


  接口、引用和连接之间的这种松耦合关系,使得组件及其实现能够在不影响其他相关组件的前提下独立地进行完善。组件可以通过导入 来访问非 SCA 系统的外部服务。导入定义了与外部服务进行通信所使用的访问机制,即绑定。导入定义了其他组件的引用要连接的接口。使用组件 (Consuming Component) 不必知道其引用究竟是连接到另一相似的组件还是通过导入连接到外部服务,只要它们所提供的接口是相同的:符合引用的接口。


  同样,可以通过导出 来调用组件。导出定义了可以提供的一组函数,而无需指定提供这些函数的组件。当将这类导出连接到组件的一个相匹配的接口时,该组件通过导出为任何调用提供服务。此外,导出可以绑定到 SCA 组件或外部服务,或者由它们进行调用。


  面向服务的体系结构中作为服务组件的 WebSphere 适配器


  资源适配器通常被定义为针对 EIS 的系统级驱动程序。当定义为 SCA 组件时,资源适配器使得任何其他组件都可以访问 EIS。根据 SCA,使用 SCA 组件不需要以 J2EE 方式 使用资源适配器。或者,SCA 组件应该作为外部服务通过 EIS 导入和 EIS 导出来访问 EIS,正如服务组件体系结构部分中所讨论的。EIS 导入实现了资源适配器的出站场景,在该场景中,SCA 组件调用了 EIS 的函数。EIS 导出实现了入站场景,在该场景中,EIS 启动相应的操作来通知和调用 SCA 组件。在前面的 J2EE Connector Architecture 部分中已对这两种场景进行了介绍。



  图 3. 服务组件体系结构中访问 EIS 的关键部分
 
  为了更方便使用者,可以通过 EAI 工具从符合 EMD 规范的带有 EIS 绑定的资源适配器(也称为 JCA 绑定)生成 EIS 导入和 EIS 导出。可以根据需要对生成的导入和导出实现进行编辑。也可以使用其他的绑定选项,如将导入绑定到纯 J2EE 方式中使用资源适配器访问 EIS 的无状态 EJB,如通过 CCI API。在这种情况下,应该使用 EJB 绑定。Web 服务可以替换上述会话 EJB,并且可以使用 Web 服务绑定。此外,只要接口是相同的,使用任何绑定类型都不会影响使用 SCA 组件。


  工具和运行时演练


  WebSphere Adapter Toolkit:用于开发自定义 WebSphere 适配器


  IBM WebSphere Adapter Toolkit 为资源适配器开发人员提供了工具、库和示例代码,以创建基于 WebSphere 适配器技术的 JCA 资源适配器。使用 WebSphere Adapter Toolkit,开发人员可以创建基本的 JCA 1.5 适配器和扩展的 JCA 1.5 WebSphere 适配器。该工具包安装于 Rational ? Application Developer 和 WebSphere Integration Developer 之上。在安装 WebSphere Adapter Toolkit 之前,需要在同一台计算机上安装 Rational Application Developer 和 WebSphere Integration Developer。


  WebSphere Integration Developer:用于企业应用程序集成和业务集成


  WebSphere Integration Developer 是创建业务流程流、状态机和业务规则的工具。同时它也对服务组件体系结构提供了支持,包括用于组装服务组件、导入服务接口定义和设置绑定策略的组装编辑器。可以在 WebSphere Integration Developer 中从导入的资源适配器存档 (RAR) 文件(可能使用 WebSphere Adapter Toolkit 开发或单独购买)组装得到 WebSphere 适配器,然后将 WebSphere 适配器作为企业存档 (EAR) 文件导出并部署到 WebSphere 平台。对于绑定 SCA 导入和导出,WebSphere Integration Developer 中的组装编辑器可以很容易地对其进行创建和配置。对于兼容于 EMD 规范的资源适配器,企业服务发现 向导创建了 EIS 导入和导出组件,而企业数据发现 向导根据数据结构创建了业务对象。


  目标运行时:应用服务器


  WebSphere Application Server 构成了 WebSphere 产品家族中其他应用服务器的基础。它也是 J2EE 应用服务器(包含对 J2EE Connector Architecture 的支持),其中包括了 Service Integration Bus (SIB),后者是企业服务总线体系结构模式的基本实现。可以将 WebSphere 适配器部署到节点级 WebSphere Application Server 上。WebSphere Enterprise Service Bus 通过为 ESB 实现提供更多的中介功能扩展了 WebSphere Application Server,例如服务请求转换、基于内容的路由和用于审核的附加日志记录。从 SCA 的角度来看,正如服务组件体系结构部分中所讨论的,中介模块是具有接口和绑定的 SCA 模块。WebSphere Process Server 通过提供业务集成功能扩展了 WebSphere ESB。可以将 WebSphere 适配器作为企业应用程序中的一部分部署到 WebSphere ESB 和 WebSphere Process Server,而不是独立地安装到节点级计算机中,这种部署方式也称为嵌入式部署。仅有 WAS 支持 WebSphere 适配器的独立部署。也可以将 WebSphere 适配器作为要部署到 WebSphere ESB 或 WebSphere Process Server 的企业应用程序中的 SCA 组件来进行组装。


  实现对面向服务的体系结构中企业信息系统的访问:自底向上方法


  根据获取的和开发的软件,访问企业信息系统所需的开发和组装任务不尽相同;对于访问 EIS 的使用者类型而言,情况也是如此。这些任务可以归纳如下:


  开发/获取:这是开发和获取访问 EIS 的资源适配器的过程。WebSphere Adapter Toolkit 简化了资源适配器的开发任务。可以以一种独立的方式将资源适配器部署到 WebSphere Application Server,并提供给 J2EE 组件使用。


  组装(组件化):这种方式允许在资源适配器之外对 SCA 组件进行组装。所使用的资源适配器可以通过购买或开发得到。只有需要从 SCA 组件和业务流程访问 EIS 时,才需要执行该任务。可以使用 WebSphere Integration Developer 进行组件的组装。可以将组装的 SCA 模块打包为企业应用程序,并部署到 WebSphere Enterprise Service Bus 或 WebSphere Process Server。


  组合:在对组件进行了定义之后,它们可以用来组成直接映射到业务的更高粒度的服务。只有在业务中的 SCA 组件不太重要并可以对其进行编排时,才需要执行该步骤。可以使用 WebSphere Integration Developer 来组成服务。这样就可以得到可部署于 WebSphere Enterprise Service Bus 或 WebSphere Process Server 的企业应用程序。


  编排:可以使用 WebSphere Integration Developer 对业务流程中经过组成得到的业务服务进行编排。可以将得到的企业应用程序部署到 WebSphere Process Server。


  结束语


  WebSphere 平台为将 EIS 集成到基于开放标准规范和技术的 SOA 提供了工具和运行时。实现任务(使用这些工具和运行时)是根据目标使用者进行设计的,它们通过获取现成的 WebSphere 适配器而为快速实现提供了更大的灵活性。


  关于作者


  Ahmed Abbas 是 Cairo Technology Development Center 的一名 IT 架构师。在其实验室的工作中,Ahmed 关注于缩小底层技术理论和实现中实际问题之间的差距,以更好地服务于用户业务需求。 

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐