1

如果我们希望 JMS 会话参与事务,我们创建一个会话参数为 true 的 JMS 会话。

但是,我在哪里提到了 JMS,它参与事务的会话是本地事务还是全局事务?

换句话说,我是否可以控制让 JMS 参与本地或全局事务,还是由应用程序容器来决定?

4

1 回答 1

1

这取决于您使用的连接工厂。

JMS 规范指定了两种不同类型的连接工厂,每种类型包含三个接口。

XAConnectionFactory、XAQueueConnectionFactory 和 XATopicConnectionFactory

对于 XA 连接工厂和

ConnectionFactory、QueueConnectionFactory 和 TopicConnectionFactory

对于非 XA 连接工厂。如果您使用 XA* *,那么您的 JMS 会话将参与全局事务。当然,这部分是从您的代码中抽象出来的,因为通常通过提供者特定的接口配置连接工厂,然后通过 JNDI 查找它们。

这是一个讨论 WebLogic 中 JMS 的全局事务的链接。

于 2012-09-06T14:14:33.297 回答