javax.jms.ConnectionFactory和javax.jms.XAConnectionFactory之间的差异
我正在进入JTA的世界,由于需要分布式交易,我不确定
javax.jms.ConnectionFactory
和javax.jms.XAConnectionFactory
之间的差异,或者更准确地说,how0ѭ是如何执行我所期望的只有javax.jms.XAConnectionFactory
可以为我做的。
细节:我使用Atomikos essentials作为我的事务管理器,我的应用程序在Apache Tomcat 6上运行。
我正在运行一个带有虚拟应用程序的小型POC,我将我的JMS提供程序(OpenMQ
)注册为JNDI
资源。
<Resource name="jms/myConnectionFactory" auth="Container"
type="com.atomikos.jms.AtomikosConnectionFactoryBean"
factory="com.atomikos.tomcat.EnhancedTomcatAtomikosBeanFactory"
uniqueResourceName="jms/myConnectionFactory"
xaConnectionFactoryClassName="com.sun.messaging.XAConnectionFactory"
maxPoolSize="3"/>
奇怪的是,在我的代码中我这样做:
Context ctx = new InitialContext();
ConnectionFactory queueConnectionFactory =
(ConnectionFactory)ctx.lookup("java:comp/env/jms/myQueueFactory");
javax.jms.Connection connection = queueConnectionFactory.createConnection();
Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
后来在代码中,我在UserTransaction
中使用了这个会话,并且它使用Commit
或Rollback
两个ѭ9完美无瑕地执行。
我不明白的是,我是如何使用javax.jms.XAConnectionFactory.createConnection()
方法而得到一个Session
来做这项工作的?什么是javax.jms.XAConnectionFactory
角色?
我还要补充一点,我已经查看了两个类的源代码(和javax.jms.BasicConnectionFactory
),并且我验证了XA类没有覆盖createConnection
。
没有找到相关结果
已邀请:
2 个回复
凰葱崎济邯
辽躺