跳到主要内容

创建XA连接

要创建一个XA连接,客户端必须首先获取一个XAConnectionFactory。然后,它可以通过调用createXAConnection()来创建到事件代理的XAConnection

有关如何编程创建或查找连接工厂以及如何建立连接的信息,请参阅建立连接。

SolXAConnectionFactory继承了SolConnectionFactory的属性,因此,要使用XA事务,必须设置以下SolConnectionFactory属性:

  • JNDI连接工厂中的direct-transport传输属性必须设置为false,以便使用保证消息传递模式(参见直接传输)。必须使用保证消息传递模式,因为只有保证消息(即具有持久或非持久传递模式的消息)可以通过事务发布或接收;直接消息不能用于XA事务或本地事务。
  • xa JMS数据连接属性必须设置为true,以允许连接工厂使用XA事务(参见XA)。

创建XA会话

一旦客户端与事件代理建立了XA连接,它就可以创建一个或多个XA会话。

在XA会话中,可以创建单独的原子事务,也称为事务分支。尽管XA会话可以包含多个事务分支(通过其唯一的Xids标识),但在XA会话中一次只能有一个事务分支处于活动状态。

要创建一个XA会话,调用XASession.createXASession()

XAResource.start(...)也可以用来恢复一个挂起的事务。

启动XA事务

与基于会话的事务不同,一旦创建了XA会话,在该XA会话中不会自动开始一个事务。要在XA会话中启动一个事务,客户端必须获取将由XA会话使用的XAResource和事务的Xid。然后可以调用XAResource.start(...)方法来启动那个特定的事务分支。(通常,事务管理器为参与分布式或全局事务的每个资源获取一个XAResource。)有关更多信息,请参阅执行XA事务操作。