介绍
从1998年以来,IBM为Java引入了访问SAP商业应用程序编程接口(BAPI)和远程函数调用(RFC)的工具。 IBM在服务器端的Java角色的早期实现意味着运行时间组件的服务质量(QoS)和可靠性将成为和工具本身一样重要。 这导致用于Java的VisualAge这个绝好的工具和其高度可靠的运行期被构建在IBM通用连接框架(CCF)上。
利用WebSphere Studio开发工具家族,IBM接受了J2C/JCA标准并把它们作为它的新工具的基础结构和一个源码开放平台连合起来。 随着这个新工具的到来,一个使用网络服务描述语言( WSDL)作为描述服务的方法的概念的新结构,和企业服务的概念一起被引入。 虽然上一代SAP工具是基于CCF,但是新一代的工具提供了用于与服务器通讯的后台机制,这个服务器使用利用资源适配器档案( RAR)文件的Java模块。 这就为一个RAR文件提供了一个标准的、不依赖工具的方法与访问所有后台的工具程序相互作用,让前端网络应用程序和后端应用程序的开发者便于理解、支持、相互通讯,而不必在乎使用的什么工具或者访问方案。
IBM提供了一个能在WebSphere产品和SAP系统之间交互作用的RAR文件,名为WebSphere Adapter for mySAP.com。 本文中,我将介绍IBM下一代SAP工具的概述,以及如何与WebSphere Studio Application Developer配合使用,以及一个企业服务的介绍。
WebSphere Studio JCA工具
在WebSphere Studio Application Developer整合版(以后简称Application Developer)中的可利用的特性,是对企业应用程序整合任务很重要的三个关键组件:
· 企业服务
· JCA工具插件
· 业务处理流程
在新工具中,企业服务被用作连接后端数据的一种机制,比如连接一个SAP服务器上的数据。 这个到后端的连接可以在下列情况发生:
· 在设计期间
使用JCA工具插件,Application Developer与一个SAP服务器连接,查找适当的BAPI,构建WSDL文件来描述它们,构建代理bean组件等等。
· 在运行期间
使用WebSphere Adapter for mySAP.com(下文称为WebSphere SAP适配器),一旦你有描述它们的WSDL文件,将有两种方法访问后端:
1. 构建不使用企业服务的代理bean组件。
2. 构建代理的 bean组件使用企业服务,使其能使用自动管理连接、数据流等等。
在详细地讨论这些方法之前,让我们仔细看看这些组件方法,即企业服务,JCA工具插件和业务处理流程。
企业服务
想一下,一个企业服务作为存在于你的企业应用程序中的一类操作程序,被完全的使用WSDL描述。
与一般使用HTTP上的SOAP访问数据源的网络服务不同,一个企业服务可以被绑定到任何协议上的任何数据源。
就SAP而言,一个企业服务将使用WebSphere SAP适配器在SAP服务器上到达要求的BAPI/RFC。
图1显示出企业服务WSDL文档结构:
图1WSDL文档
在WSDL文档的上部,你能看到Abstract Service
Interface Definition(抽象服务接口定义),在 WSDL中被称为PortType。
PortType由一个或多个输入和输出操作组成,被消息描述。
消息使用XML Schema报告,用来描述流入和流出服务的业务数据。
WSDL文档的下部让你描述服务接口如何实现而在哪里可以查找到它。在WSDL中是通过扩展元素完成的。举例来说:
·
被一个服务提供者特定端口扩展元素描述的服务位置。
·
由绑定部分的服务提供者特定扩展元素描述的服务实现。
能够扩展WSDL是一个非常有效的特点,因为它意味着你可以描述任何类型的服务;它不局限于网络服务。图2显示在WebSphere
Studio Application Developer中有效的另一个服务。
图2WebSphere Studio服务
JCA工具插件
JCA 1.0能使企业信息系统(EIS)通过供应商提供的资源适配器插入到应用程序服务器环境。IBM提供JCA工具插件作为JCA
1.0的一个扩展,让EIS提供者为WebSphere Studio编写自己的插入式组件,提供给开发者团体对他们的组件的工具支持。
JCA工具插件定义了如何提供到WSDL的EIS特定绑定扩展,以及定义了一个工具环境如何与一个EIS系统相互作用,取得它提供的函数的元信息。JCA工具插件还定义了一个EIS系统如何提供代码生成作用,并且覆盖了使用解释EIS系统服务调用方法的元数据支持的JCA通用客户端接口CCI扩展。
业务处理流程
业务处理流程(下文简称流程)技术是一个中间件的一个重要的组成部分。
IBM很久前就提供流程技术作为许多产品的一部分(最著名的有,用于基于人的工作流程的MQSeries
Workflow,用于消息流的MQSeries Integrator,用于基于MQ适配器的MQSeries
Adapter Offering和用于基于Java适配器的Enterprise Access
Builder)。这个新的纯Java流程引擎,被编写成一个WebSphere企业服务,使流程技术和其它J2EE提供的服务能够紧密整合。
一个流程由一系列的服务节点组成,每个节点表示一个服务操作的调用。服务节点由指明执行顺序的控制连接捆绑在一起,在相应的情况下将发生相应的执行操作。服务节点之间的数据流使用数据连接构造。这些数据连接可以包含数据映射节点,用于当服务节点之间的消息不相配的情况。流程组成使用流程定义标注语言(FDML)描述。
Application Developer提供了基于可视化流程的工具,定义了应用程序衍生物如后端适配器、Java
bean组件、EJB、服务或者其它流程之间的信息顺序和流程。(在WebSphere
Studio Application Developer 4.1.x版中,只有无中断、短期运转和同步流程被支持。这类流程被认为是一个微流程或服务流程。可中断的、长期运行和异步流程将在以后的版本中发布。)
WebSphere Adapter for mySAP.com
WebSphere SAP适配器提供了一个用于SAP的通道,在SAP
R/3系统和基于Java应用程序之间通信。WebSphere SAP
Adapter由三部分组成(图3):
· 基本连接器
· JCA资源适配器
· JCA工具插件
图3: WebSphere SAP适配器
基本连接器
基本连接器包含用于访问SAP R/3系统的运行时间类。它实现SAP
RFC协议的客户端接口,SAP RFC协议是依据用于Java的通用RFC接口,这是一个用于RFC访问的不依赖中间件的层。这样,使用基本连接器构建的应用程序可以在运行期使用不同的SAP
R/3存取方法,而不用重新编码。用于Java的通用RFC接口的一个Java本地实现(JNI)包含了基本连接器。
JCA资源适配器
JCA提供提供了一个用于资源适配器的通用基础结构程序设计模型。这个通用基础结构程序设计模型定义了一个兼容JCA的应用程序服务器和一个JCA资源适配器之间的结合。它能使应用程序服务器控制资源适配器的状态,虽然资源适配器可以以一种容易的方法利用应用程序服务器提供的服务质量(比如安全、事务、连接池等等)。WebSphere
SAP适配器中的JCA资源适配器组件实现JCA 1.0规范。
JCA工具插件
WebSphere SAP适配器中的JCA工具插件组件使适配器可插入WebSphere
Studio Application Developer。
图4JCA工具插件
JCA工具插件包含下面的组件:
· 一套WSDL扩展元素实现定义了一个到WebSphere SAP适配器的指定的连接器绑定。
· 一套运行时间组件,使WebSphere SAP适配器能被作为一个服务被调用。
· 一个工具描述符文件,被工具环境用来使用WebSphere
SAP适配器。
WebSphere应用程序服务器的服务质量(QoS)
SAP连接器在用于Java的VisualAge下和在WebSphere
Application Server 2.0以后的版本下运行时享有刀枪不入的名声,运行时间和服务器组件的可靠性更是和新的兼容J2C的适配器和上面讨论到的新出现的工具标准有联系。WebSphere应用程序服务器中整体的服务质量由三个服务提供:
· 连接池
· 事务管理
· 安全管理
连接池
当从一个SAP服务器检索数据的时候,总事务处理时间(从连接来接收数据到关闭连接)的大部分时间花费在连接本身。连接池可以缓和这个瓶颈。当你要求一个连接的时候,传送一个处理到下一个已经在准备状态的有效连接。通过消除连接时间,性能被极大地改善,并且可以伸缩操作,根据你的需要预先确定连接池中的连接数。
WebSphere应用程序服务器中的EJB容器支持管理连接,意味着在这个版本中,企业bean组件可以使用管理环境。然而这个支持没有扩展到网络容器,所以servlets不能直接地使用管理环境。它们必须调用一个企业bean组件来利用管理环境。
你可以通过指定SAP连接工厂的Maximum Connections字段的值,限制任一时间存在的最大连接数。在这个连接数到达以后,不会创建新的连接,并且抛出
javax.resource.spi.ResourceAllocationException 意外。
你也可以指定新的连接请求等待一段时间,让一个连接成为有效连接。这段时间可以在连接工厂的Connection
Timeout字段中设定。你还可以通过指定连接工厂的Minimum
Connections字段的值,限制任一时间存在的最小连接数。
在设置最大连接和最小连接字段时,没有推荐的设定值。最大连接数的理想值取决于从WebSphere
应用程序服务器到SAP的网络流通量。设置了超过网络可以处理的连接数值,将导致效率下降。最小连接数取决于你可以承受(指成本)的保持连接的连接数。如果这个值被设置与最大连接数相等,那么会很理想。
为了取得WebSphere应用程序服务器中的管理连接(图5):
1. J2EE应用程序调用,查找一个SAP连接工厂。
2. WebSphere应用程序服务器把一个SAP连接工厂从JNDI服务器返回到J2EE应用程序。
3. J2EE应用程序向SAP连接工厂请求一个到SAP服务器的连接。SAP连接工厂发送一个管理连接的请求到WebSphere应用程序服务器
4. WebSphere应用程序服务器从它的连接池返回一个管理连接到J2EE应用程序。
5. J2EE应用程序使用管理连接发送并从一个资源适配器接收数据。
6. 资源适配器使用管理连接从SAP发送并接收数据。
图5连接池
事务管理
基本上有三种事务:
· 没有事务
· 本地事务
这些事务被资源管理程序(即SAP资源适配器)内部管理,并且当只有一个资源管理程序被调用的时候使用。本地事务只支持单阶段委托(1PC),因为它们只参考一个SAP系统。
· 全局事务
全局事务(亦称JTA或者XA事务)被一个事务管理程序管理,控制并协调跨多个资源管理程序的事务。这个事务管理程序按如下方式协调跨多个资源管理程序的二阶段委托(2PC):
1. 阶段1:
§
事务管理程序要求所有的资源管理程序准备委托它们的工作。
§
如果一个资源管理程序可以委托它的工作,它肯定地答复并把它的可回收的数据保存到永久存储器中。
§
一个否定的答复报告因某原因不能提交委托。
2. 阶段2:
§ 以阶段1的答复为根据,事务管理程序命令所有的资源管理程序要么委托要么重新运行为全局事务做的工作。
如果资源适配器支持全局事务,那么它还必须实现对于1PC的支持。这将允许事务管理程序使1PC最优化。
有两种类型的最优化(目前在WebSphere应用程序服务器v4中不支持):
· 本地事务最优化
在一个全局事务不需要2PC的情况下强制使用1PC。
例如,当只有一个资源管理程序被引用的时候,使用2PC将造成不必要的额外消,这时候应该只使用1PC。这个结果是事务管理程序跳过准备阶段,直接委托或者返回。
· 上一个资源的最优化
亦称最后服务最优化,这种类型的最优化允许使用在一个全局事务中的单一1PC资源,连同许多2PC资源。在事务提交委托时,2PC资源将首先被准备。如果成功,1PC资源将被调用来委托,紧接着是一个2PC资源的委托调用。
WebSphere SAP适配器的CSD版还提供了一个事务属性被设置为NoTransaction的RAR文件。
如果你在一个有上一资源最优化和一个额外的1PC资源的2PC方案中,正在使用WebSphere
SAP适配器,这个文件将非常有用。
因为上一资源最优化仅仅使用单一1PC资源工作,这个方案将不会使用支持本地事务的WebSphere
SAP适配器工作。 然而,因为WebSphere SAP适配器的默认情况不支持事务自动委托每个BAPI/RFC调用,所以你必须知道处理与这种行为相关联的问题。
比如,有可能在全局事务期间,一些BAPI调用将被成功的执行,意味着它们被自动委托。
如果当访问参与事务的一个资源的时候发生一个错误,事务可能失败并被退回。这可能导致SAP中改变的一个状态保持不变的状态,而其它改变的资源被丢弃。
安全管理
为了创建到SAP服务器的一个连接,一定有一个SAP的某种形式开始鉴别这个连接请求者是谁。有两种验证机制:
· 应用程序管理验证
这需要应用程序通过ConnectionSpec向SAP传送用户名和口令证书。如果ConnectionSpec中的证书没有设置,那么SAP连接工厂的用户名和口令字段证书将被使用。
· 容器管理验证
应用程序依赖应用程序服务器提供安全证书,而不是应用程序自己指定证书。
在WebSphere应用程序服务器V4中,只支持应用程序管理验证(JCA规范中的选项C)。用于判断应用程序或者容器管理安全是否应使用的配置描述符的<res-auth>元素,被忽略。
结论
WebSphere SAP适配器连同WebSphere Studio Application
Developer和WebSphere应用程序服务器一起,提供一种在使用企业服务和普通的WSDL描述符文件的网络应用程序中整合SAP系统的方法。这个新的连接性基于SAP适配器在前一版本中享有重要的服务质量,把它扩展为一个开放式体系结构。
|