首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何解决 javax.jms.TransactionInProgressException: Cannot rollback() inside an XASession on JBoss EAP 6.2 and Active MQ 5.10.0?

如何解决 javax.jms.TransactionInProgressException: Cannot rollback() inside an XASession on JBoss EAP 6.2 and Active MQ 5.10.0?
EN

Stack Overflow用户
提问于 2018-08-01 04:15:13
回答 2查看 0关注 0票数 0

有以下代码:

代码语言:txt
复制
 <!-- JBoss TX Manager -->
    <bean id="jtaTxManager"
        class="org.springframework.transaction.jta.JtaTransactionManager">
        <property name="transactionManagerName" value="java:/TransactionManager" />
    </bean>
    
    <bean id="jmsXaConnectionFactory" class="org.apache.activemq.ActiveMQXAConnectionFactory">
        <property name="brokerURL" value="$camelProp{brokerUrl}" />
        <property name="userName" value="$camelProp{queueUsername}" />
        <property name="password" value="$camelProp{queuePw}" />
    </bean>
    
     <bean id="pooledXAConnectionFactory" class="org.apache.activemq.pool.XaPooledConnectionFactory"
        init-method="start" destroy-method="stop">
        <property name="maxConnections" value="$camelProp{queue.maxConnections}" />
        <property name="connectionFactory" ref="jmsXaConnectionFactory" />
    </bean>

    <bean id="jmsConfig" class="org.apache.camel.component.jms.JmsConfiguration">
        <property name="connectionFactory" ref="pooledXAConnectionFactory" />
        <property name="concurrentConsumers" value="$camelProp{queue.concurrentConsumers}" />
        <!-- define the jms consumer/producer as transacted -->
        <property name="transacted" value="true" />
        <!-- setup the transaction manager to use -->
        <property name="transactionManager" ref="jtaTxManager" />
    </bean>

    <!-- define our activemq component -->
    <bean id="activemq"
        class="org.apache.activemq.camel.component.ActiveMQComponent">
        <property name="configuration" ref="jmsConfig" />
    </bean>

12:45:06,277 WARN [org.apache.activemq.jms.pool.PooledSession] (http-localhost/127.0.0.1:8180-1) Caught exception trying rollback() when putting session back into the pool, will invalidate. javax.jms.TransactionInProgressException: Cannot rollback() inside an XASession: javax.jms.TransactionInProgressException: Cannot rollback() inside an XASession at org.apache.activemq.ActiveMQXASession.rollback(ActiveMQXASession.java:78) [activemq-client-5.10.0.jar:5.10.0] at org.apache.activemq.jms.pool.PooledSession.close(PooledSession.java:116) [activemq-jms-pool-5.10.0.jar:5.10.0] at org.springframework.jms.connection.JmsResourceHolder.closeAll(JmsResourceHolder.java:215) [spring-jms-3.2.8.RELEASE.jar:3.2.8.RELEASE] at org.springframework.jms.connection.ConnectionFactoryUtils$JmsResourceSynchronization.releaseResource(ConnectionFactoryUtils.java:412) [spring-jms-3.2.8.RELEASE.jar:3.2.8.RELEASE] at org.springframework.jms.connection.ConnectionFactoryUtils$JmsResourceSynchronization.releaseResource(ConnectionFactoryUtils.java:389) [spring-jms-3.2.8.RELEASE.jar:3.2.8.RELEASE] at org.springframework.transaction.support.ResourceHolderSynchronization.afterCompletion(ResourceHolderSynchronization.java:98) [spring-tx-3.2.8.RELEASE.jar:3.2.8.RELEASE] at org.springframework.transaction.support.TransactionSynchronizationUtils.invokeAfterCompletion(TransactionSynchronizationUtils.java:168) [spring-tx-3.2.8.RELEASE.jar:3.2.8.RELEASE] at org.springframework.transaction.support.AbstractPlatformTransactionManager.invokeAfterCompletion(AbstractPlatformTransactionManager.java:994) [spring-tx-3.2.8.RELEASE.jar:3.2.8.RELEASE] at org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCompletion(AbstractPlatformTransactionManager.java:969) [spring-tx-3.2.8.RELEASE.jar:3.2.8.RELEASE] at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:800) [spring-tx-3.2.8.RELEASE.jar:3.2.8.RELEASE] at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:724) [spring-tx-3.2.8.RELEASE.jar:3.2.8.RELEASE] at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:148) [spring-tx-3.2.8.RELEASE.jar:3.2.8.RELEASE] at org.apache.camel.spring.spi.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:174) [camel-spring-2.13.1.jar:2.13.1] at org.apache.camel.spring.spi.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:134) [camel-spring-2.13.1.jar:2.13.1] at org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:103) [camel-spring-2.13.1.jar:2.13.1] at org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:112) [camel-spring-2.13.1.jar:2.13.1] at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191) [camel-core-2.13.1.jar:2.13.1] at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191) [camel-core-2.13.1.jar:2.13.1] at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:105) [camel-core-2.13.1.jar:2.13.1] at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:87) [camel-core-2.13.1.jar:2.13.1] at org.apache.camel.component.cxf.CxfConsumer$1.syncInvoke(CxfConsumer.java:136) [camel-cxf-2.13.1.jar:2.13.1] at org.apache.camel.component.cxf.CxfConsumer$1.invoke(CxfConsumer.java:77) [camel-cxf-2.13.1.jar:2.13.1] at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58) [cxf-api-2.7.10.jar:2.7.10] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [rt.jar:1.7.0_65] at java.util.concurrent.FutureTask.run(FutureTask.java:262) [rt.jar:1.7.0_65] at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37) [cxf-api-2.7.10.jar:2.7.10] at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:107) [cxf-api-2.7.10.jar:2.7.10] at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272) [cxf-api-2.7.10.jar:2.7.10] at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) [cxf-api-2.7.10.jar:2.7.10] at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239) [cxf-rt-transports-http-2.7.10.jar:2.7.10] at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:248) [cxf-rt-transports-http-2.7.10.jar:2.7.10] at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:222) [cxf-rt-transports-http-2.7.10.jar:2.7.10] at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:153) [cxf-rt-transports-http-2.7.10.jar:2.7.10] at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:167) [cxf-rt-transports-http-2.7.10.jar:2.7.10] at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286) [cxf-rt-transports-http-2.7.10.jar:2.7.10] at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:206) [cxf-rt-transports-http-2.7.10.jar:2.7.10] at javax.servlet.http.HttpServlet.service(HttpServlet.java:754) [jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-1.jar:1.0.2.Final-redhat-1] at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262) [cxf-rt-transports-http-2.7.10.jar:2.7.10] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) [jboss-as-web-7.3.0.Final-redhat-14.jar:7.3.0.Final-redhat-14] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:920) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1] at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_65]

EN

Stack Overflow用户

发布于 2018-08-01 13:45:57

改变如下配置

代码语言:txt
复制
<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>
代码语言:txt
复制
compile "com.atomikos:transactions-jms:4.0.6"
compile "com.atomikos:transactions-jta:4.0.6"
compile "com.atomikos:transactions-jdbc:4.0.6"
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100004985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档