事务管理
基本上有三种事务:
· 没有事务
· 本地事务
这些事务被资源管理程序(即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适配器在前一版本中享有重要的服务质量,把它扩展为一个开放式体系结构。

