javax.jms.TransactionProgressException:无法在JBoss EAP 6.2和活动MQ 5.10.0上的XASession内回滚()
我们正在尝试使用运行在JBoss EAP 6.2上的活动MQ 5.10.0和camel 2.13.1创建XA连接池。当释放到池的连接时,将引发下面的异常。根据其他线程的说法,这个错误是通过活动MQ 5.8.x修复的。知道为什么我们还是会出错吗?活动MQ客户端和服务器正在使用5.10.0运行 弹簧配置:javax.jms.TransactionProgressException:无法在JBoss EAP 6.2和活动MQ 5.10.0上的XASession内回滚(),jboss,transactions,apache-camel,activemq,xa,Jboss,Transactions,Apache Camel,Activemq,Xa,我们正在尝试使用运行在JBoss EAP 6.2上的活动MQ 5.10.0和camel 2.13.1创建XA连接池。当释放到池的连接时,将引发下面的异常。根据其他线程的说法,这个错误是通过活动MQ 5.8.x修复的。知道为什么我们还是会出错吗?活动MQ客户端和服务器正在使用5.10.0运行 弹簧配置: 在该事务中发生了一些奇怪的事情。我知道的一件事是,您的配置不太正确 JmsConfig bean需要有transact=“false”-属性名称有点误导,因为它实际上意味着“在本地管理此事务”(
在该事务中发生了一些奇怪的事情。我知道的一件事是,您的配置不太正确 JmsConfig bean需要有
transact=“false”
-属性名称有点误导,因为它实际上意味着“在本地管理此事务”(它只是在底层spring DefaultMessageListenerContainer上设置TransactiveSession属性,请参阅)
此外,您还需要在PooledConnectionFactory上设置transactionManager(我很确定,如果您在ActiveMQClient上的transactionManager为null时运行了调试器)
下面是我目前正在运行的一个工作示例(EAP 6.2和AMQ 5.9)
我更改了如下配置,它修复了我面临的类似问题
<bean id="jmsXAConnectionFactory"
class="org.apache.activemq.ActiveMQXAConnectionFactory"
p:brokerURL="tcp://${activemq.host}:${activemq.port}" />
<bean id="xa.connectionFactory" class="com.atomikos.jms.AtomikosConnectionFactoryBean"> <!-- connection pool -->
<property name="uniqueResourceName" value="amq1" />
<property name="xaConnectionFactory" ref="jmsXAConnectionFactory" />
</bean>
<bean id="jmsConfig"
class="org.apache.camel.component.jms.JmsConfiguration"
p:connectionFactory-ref="xa.connectionFactory"
p:concurrentConsumers="${concurrent.consumers.default}"
p:transactionManager-ref="transactionManager"
p:transacted="true"
p:cacheLevelName="CACHE_CONNECTION"/>
<!-- we are using JMS component from apache-camel -->
<bean id="jms"
class="org.apache.activemq.camel.component.ActiveMQComponent"
p:configuration-ref="jmsConfig" />
</beans>
<bean id="jmsXAConnectionFactory"
class="org.apache.activemq.ActiveMQXAConnectionFactory"
p:brokerURL="tcp://${activemq.host}:${activemq.port}" />
<bean id="xa.connectionFactory" class="com.atomikos.jms.AtomikosConnectionFactoryBean"> <!-- connection pool -->
<property name="uniqueResourceName" value="amq1" />
<property name="xaConnectionFactory" ref="jmsXAConnectionFactory" />
</bean>
<bean id="jmsConfig"
class="org.apache.camel.component.jms.JmsConfiguration"
p:connectionFactory-ref="xa.connectionFactory"
p:concurrentConsumers="${concurrent.consumers.default}"
p:transactionManager-ref="transactionManager"
p:transacted="true"
p:cacheLevelName="CACHE_CONNECTION"/>
<!-- we are using JMS component from apache-camel -->
<bean id="jms"
class="org.apache.activemq.camel.component.ActiveMQComponent"
p:configuration-ref="jmsConfig" />
</beans>
compile "com.atomikos:transactions-jms:4.0.6"
compile "com.atomikos:transactions-jta:4.0.6"
compile "com.atomikos:transactions-jdbc:4.0.6"