Hi All, Requirement - Transacted route, we have to consume messages from MQ queue. Multiple resources involved, hence use XA transactions.
Environment - Jboss Fuse 6.2.1, JDK 8, MQ 7.5.0.3 I use following to create the JMSComponent in blueprint and everything works fine as expected. <bean id="wmqxa" class="org.apache.camel.component.jms.JmsComponent"> <property name="configuration" ref="WMQConfig" /> </bean> <bean id="WMQConfig" class="org.apache.camel.component.jms.JmsConfiguration"> <property name="connectionFactory" ref="FuseWmqXaConnectionFactory" /> <property name="transacted" value="false" /> <property name="transactionManager" ref="platformTxManager" /> <property name="maxConcurrentConsumers" value="5" /> <property name="cacheLevelName" value="CACHE_NONE" /> </bean> <bean id="FuseWmqXaConnectionFactory" class="org.apache.activemq.jms.pool.JcaPooledConnectionFactory"> <property name="connectionFactory" ref="WMQConnectionFactory"/> <property name="transactionManager" ref="recoverableTxManager"/> <property name="maxConnections" value="1"/> <property name="name" value="wmq" /> </bean> <bean id="WMQConnectionFactory" class="com.ibm.mq.jms.MQXAConnectionFactory"> <property name="hostName" value="hostname" /> <property name="port" value="1414" /> <property name="queueManager" value="QUEUE.MANAGER" /> <property name="channel" value="SYSTEM.ADMIN.SVRCONN" /> <property name="transportType" value="1" /> </bean> With respect to above configuration I created a custom bean that extends from JMSComponent and tried to create JMS XA connection factory 1) defined a custom bean com.ai.jms.WmqJmsComponent that extends from JMSComponent 2) Inside this bean I am instantiating and wiring all above components The XA connection works fine when I send the message to MQ, however when I am using the same connection to consume message from MQ it produces following warnings/errors in log file, PooledSession | 189 - org.apache.activemq.activemq-osgi - 5.11.0.redhat-621107 | Caught exception trying close() when putting session back into the pool, will invalidate. com.ibm.msg.client.jms.DetailedIllegalStateException: JMSCC0020: This session is closed. n | An application called a method that must not be used after the session is closed. n | Ensure that the session is not closed before calling the method. com.ibm.msg.client.jms.DetailedIllegalStateException: JMSCC0020: This session is closed. An application called a method that must not be used after the session is closed. Ensure that the session is not closed before calling the method. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)[:1.8.0_25] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)[:1.8.0_25] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)[:1.8.0_25] at java.lang.reflect.Constructor.newInstance(Constructor.java:408)[:1.8.0_25] at com.ibm.msg.client.commonservices.j2se.NLSServices.createException(NLSServices.java:319)[357:com.ibm.msg.client.osgi.commonservices.j2se:7.5.0.3] at com.ibm.msg.client.commonservices.nls.NLSServices.createException(NLSServices.java:233)[358:com.ibm.msg.client.osgi.jms:7.5.0.3] at com.ibm.msg.client.jms.internal.JmsErrorUtils.createException(JmsErrorUtils.java:109)[358:com.ibm.msg.client.osgi.jms:7.5.0.3] at com.ibm.msg.client.jms.internal.State.checkNotClosed(State.java:150)[358:com.ibm.msg.client.osgi.jms:7.5.0.3] at com.ibm.msg.client.jms.internal.JmsSessionImpl.checkNotClosed(JmsSessionImpl.java:2526)[358:com.ibm.msg.client.osgi.jms:7.5.0.3] at com.ibm.msg.client.jms.internal.JmsSessionImpl.setMessageListener(JmsSessionImpl.java:1730)[358:com.ibm.msg.client.osgi.jms:7.5.0.3] at com.ibm.mq.jms.MQSession.setMessageListener(MQSession.java:1004)[360:com.ibm.msg.client.osgi.wmq:7.5.0.3] at org.apache.activemq.jms.pool.PooledSession.close(PooledSession.java:103)[189:org.apache.activemq.activemq-osgi:5.11.0.redhat-621107] at org.springframework.jms.support.JmsUtils.closeSession(JmsUtils.java:108)[215:org.apache.servicemix.bundles.spring-jms:3.2.12.RELEASE_2] at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.clearResources(DefaultMessageListenerContainer.java:1142)[215:org.apache.servicemix.bundles.spring-jms:3.2.12.RELEASE_2] at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1001)[215:org.apache.servicemix.bundles.spring-jms:3.2.12.RELEASE_2] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_25] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_25] at java.lang.Thread.run(Thread.java:745)[:1.8.0_25] Appreciate any help to resolve this issue. Thanks, Pravin -- View this message in context: http://camel.465427.n5.nabble.com/Camel-JMS-XA-Client-tp5790967.html Sent from the Camel - Users mailing list archive at Nabble.com.