Skip to content

Instantly share code, notes, and snippets.

@jpoetker
Last active November 13, 2015 15:23
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jpoetker/3839430 to your computer and use it in GitHub Desktop.
Save jpoetker/3839430 to your computer and use it in GitHub Desktop.
XA Pooled MQ JMS Service Mix Config
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" default-availability="mandatory">
<description>POC: Camel JMS Component for WMQ</description>
<reference id="connectionFactory" interface="javax.jms.ConnectionFactory" filter="(system=ESB)" availability="mandatory" />
<bean id="jmsComponent" class="org.apache.camel.component.jms.JmsComponent">
<property name="connectionFactory" ref="connectionFactory"/>
<!-- Cache Level should be none or auto for XA -->
<property name="cacheLevelName" value="CACHE_NONE"/>
<property name="transactionManager">
<reference interface="org.springframework.transaction.PlatformTransactionManager"/>
</property>
<property name="transacted" value="false"/>
<property name="testConnectionOnStartup" value="true"/>
</bean>
<service ref="jmsComponent" interface="org.apache.camel.Component">
<service-properties>
<entry key="system" value="ESB"/>
</service-properties>
</service>
</blueprint>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
<description>POC: Websphere MQ XA Connectivity (Pooled)</description>
<reference id="transactionManager" interface="javax.transaction.TransactionManager"
availability="mandatory" />
<reference id="recoverableTxManager"
interface="org.apache.geronimo.transaction.manager.RecoverableTransactionManager"
availability="mandatory" />
<bean id="wmqConnectionFactory" class="com.ibm.mq.jms.MQXAConnectionFactory">
<property name="transportType" value="1" />
<property name="hostName" value="192.168.21.136" />
<property name="port" value="1414" />
<property name="queueManager" value="jpoetker.poc.mqm" />
<property name="channel" value="poc.esb.channel" />
</bean>
<bean id="connectionFactory" class="org.fusesource.jms.pool.JcaPooledConnectionFactory">
<property name="xaConnectionFactory" ref="wmqConnectionFactory" />
<property name="transactionManager" ref="transactionManager" />
<property name="maxConnections" value="5" />
<property name="maximumActive" value="5" />
<property name="name" value="ibm-wmq" />
</bean>
<bean id="resourceManager-WMQ" class="org.fusesource.jms.pool.GenericResourceManager"
init-method="recoverResource">
<property name="connectionFactory" ref="wmqConnectionFactory" />
<property name="transactionManager" ref="recoverableTxManager" />
<property name="resourceName" value="ibm-wmq" />
</bean>
<service ref="connectionFactory" interface="javax.jms.ConnectionFactory">
<service-properties>
<entry key="system" value="ESB"/>
</service-properties>
</service>
</blueprint>
@jpoetker
Copy link
Author

jpoetker commented Oct 5, 2012

This configuration leaves me with this xa error, which gets put into a thread to retry - so it repeats.

05:25:30,034 | ERROR | RetryTimer | RecoveryController | 172 - org.apache.aries.transaction.manager - 0.3.1 | Recovery error
javax.transaction.xa.XAException: The method 'xa_recover' has failed with errorCode '-3'.
at com.ibm.mq.jmqi.JmqiXAResource.recover(JmqiXAResource.java:749)[210:com.ibm.msg.client.osgi.wmq:7.5.0.0]
at org.apache.geronimo.transaction.manager.WrapperNamedXAResource.recover(WrapperNamedXAResource.java:93)[172:org.apache.aries.transaction.manager:0.3.1]
at org.apache.geronimo.transaction.manager.RecoveryImpl.recoverResourceManager(RecoveryImpl.java:99)[172:org.apache.aries.transaction.manager:0.3.1]
at org.apache.geronimo.transaction.manager.RecoverTask.run(RecoverTask.java:54)[172:org.apache.aries.transaction.manager:0.3.1]
at org.apache.geronimo.transaction.manager.ExponentialtIntervalRetryScheduler$TaskWrapper.run(ExponentialtIntervalRetryScheduler.java:50)[172:org.apache.aries.transaction.manager:0.3.1]
at java.util.TimerThread.mainLoop(Timer.java:534)[:1.6.0_24]
at java.util.TimerThread.run(Timer.java:484)[:1.6.0_24]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment