第 5 章 Web Service Transaction service 的管理
事务性 Web Services 应用程序的基本构件是:
- 应用程序本身
- 应用程序消费的 Web Service
- 事务管理者(Transaction Manager)
- 支持这些 Web 服务的事务参与者
在典型的部署里,单个开发人员不太可能支持所有这些角色。开发人员经常编写服务、或者消费服务的应用程序,而系统管理员则运行事务管理基础结构。
5.1. 事务管理者 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
事务管理者是一个 Web service,它协调 JBoss Transaction 服务的事务。它是 JBoss Transaction 服务里唯一的软件组件,其目的是作为网络服务直接运行,而不支持最终用户代码。事务管理者以 JAXM 请求/响应 web 服务运行。
重要
当启动其中部署有 JBoss Transaction 服务的应用程序服务器实例时,你可以在控制台或日志里看到不同的错误信息。下面是一些错误信息:
16:53:38,850 ERROR [STDERR] Message Listener Service: started, message listener jndi name activationcoordinator
16:53:38,850 ERROR [STDERR] Message Listener Service: started, message listener jndi name activationcoordinator
这些只是提供一些信息,并非实际的错误。
5.1.1. 配置事务管理者 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
事务管理者和相关的基础结构是通过属性文件来配置的:
wscf.xmlwst.xmlwstx.xml
这些文件位于
conf 目录里且用于配置演示程序和 standalone 模块。
在多数情况下,这些文件里的缺省值不需要修改。然而,com.arjuna.ats.arjuna.objectstore.objectStoreDir 属性决定了用于记录事务状态的持久库的位置。
C:/temp/ObjectStore 的缺省值应该修改为适合你的系统的值。在产品环境里,这个目录应该位于容错介质里,如 RAID 阵列。
当应用程序使用独立的 coordinator 时,你必须启用并修改
wstx.xml 文件里的两个其他属性:
- com.arjuna.mw.wst.coordinatorURL
- com.arjuna.mw.wst.terminatorURL
这些属性代表着客户端应用程序用来联系独立 coordinator 的 URL。它们应该用正确的独立 coordinator 的主机名和端口进行配置。
注意
JBoss Transaction 服务是高度模块化的。为了灵活地配置个体组件,在多个配置文件里可能有相同的属性值。而对于大部分配置而言,你应该使多个文件里定义的属性保持一致。
5.1.2. 部署事务管理者 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Transaction 服务的 Web Service 事务管理者组件由大量的 JAR 文件组成,它们包含应用程序的类文件以及开放必要服务的 Web service(WAR)文件。程序员在开发阶段将所有的组件都包含在 EAR 文件里,以简化事务架构的部署。在产品环境里,你可以将事务管理者安装为独立的应用程序,以在服务器级别集中配置和管理。JBoss Transaction 服务附带的演示程序包含了一个部署描述符示例,它包含了应用程序里的事务管理者组件的定义。
对于底层的协议通讯,JBoss Transaction 服务使用了固定的终端。因此,如果使用 Transaction 服务的多个应用程序都同时部署到了相同的服务器里,就会出现问题。要在相同服务器里部署多个应用服务器,可将事务管理者作为单独的应用程序部署,而不要将其嵌入到应用程序的部署里。
JBoss Transaction 服务安装里的 coordinator 目录协助配置和部署独立事务管理者。要使用它,你必须:
- 安装 JBoss 企业级应用程序平台 5
- 安装 ant 1.4 或更新版本
重要
应用服务器的安装必须和客户和服务部署位于不同位置。否则,在不同的 JBoss Transaction 服务组件间会出现冲突。
编辑 coordinator 包括的
build.xml,使其指向事务 coordinator 将部署的应用服务器的安装位置,以及 JBoss Transaction 服务安装的位置。coordinator 的 dd/ 目录里的 ws-c_jaxm_web-app.xml and ws-t_jaxm_web-app.xml 是对应 WS-C 和 WS-T WAR 文件的部署描述符。它们包含了 URL 模板。在构建阶段,ant 将用 build.xml 里的 hostname 和 port 值替代到这些文件里。
用
target deploy-weblogic、deploy-jboss 或 deploy-webmethods 运行ant,以创建和部署新的 coordinator 到正确的应用服务器里。
然后,通过生成演示程序并指定 coordinator 的端口和主机名,为客户端指向所需的 coordinator。
5.1.3. 部署描述符 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
修改 JBoss Transaction 服务使用的不同部署描述符的内容通常不是必需的。然而,如果你确实需要进行修改,你可以在 coordinator 模块里找到它们。
不是所有的 JBoss Transaction 服务组件都可以访问部署描述符里的信息。因此,如果你修改了任何 WS-C 或 WS-T 部署描述符使用的 JNDI 名称,你可能需要在运行时通知其他 JBoss Transaction 服务组件,这是通过在
wstx.xml 文件里设置合适的属性来实现的。
表 5.1 “部署描述符的值和属性” 表显示了部署描述符使用的缺省 JNDI 名称以及在修改了缺省值时需要相应设置的属性。
| JNDI 名称 | 属性 |
|---|---|
| Activationrequester | com.arjuna.mw.wst.at.activationrequester |
| Activationcoordinator | com.arjuna.mw.wst.at.activationcoordinator |
| Completionparticipant | com.arjuna.mw.wst.at.completionparticipant |
| Registrationrequester | com.arjuna.mw.wst.at.registrationrequester |
| durable2pcdispatcher | com.arjuna.mw.wst.at.durable2pcdispatcher |
| durable2pcparticipant | com.arjuna.mw.wst.at.durable2pcparticipant |
| volatile2pcdispatcher | com.arjuna.mw.wst.at.volatile2pcdispatcher |
| volatile2pcparticipant | com.arjuna.mw.wst.at.volatile2pcparticipant |
| businessagreementwithparticipantcompletiondispatcher | com.arjuna.mw.wst.ba.businessagreementwpcdispatcher |
| businessagreementwithparticipantcompletionparticipant | com.arjuna.mw.wst.ba.businessagreementwpcparticipant |
| businessagreementwithcoordinatorcompletiondispatcher | com.arjuna.mw.wst.ba.businessagreementwccdispatcher |
| businessagreementwithcoordinatorcompletionparticipant | com.arjuna.mw.wst.ba.businessagreementwccparticipant |