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