Hi All, I am running an Apache Camel application inside of WebSphere Application Server v7.
Background: Our application uses the Camel JMS component to retrieve a JMS connection factory from JNDI and uses this to receive messages from a Remote WebSphere MQ Bus: <jee:jndi-lookup id="connectionFactory" jndi-name="${qcf.jndi.name}" /> CACHE_NONE is required when running in WAS Work Manager REFER: http://camel.465427.n5.nabble.com/Camel-JMS-Request-Reply-with-Websphere-td5095847.html <bean id="MQSeries" class="org.apache.camel.component.jms.JmsComponent"> Must be set to false for XA transactions. The name of this property is misleading. What it really indicates is whether or not the Camel JMS component supports local transactions. For XA transactions, on the other hand, you must set this property to false and initialize the transactionManager property with a reference to an XA transaction manager. <property name="transacted" value="true" /> <property name="connectionFactory" ref="connectionFactory" /> <property name="deliveryPersistent" value="${delivery.persistent}" /> <property name="timeToLive" value="${time.to.live}" /> <property name="concurrentConsumers" value="${jms.concurrent.consumers}" /> <property name="taskExecutor" ref="taskExecutor" /> <property name="cacheLevelName" value="CACHE_NONE" /> <property name="receiveTimeout" value="#{${jms.receive.timeout.in.seconds} * 1000}" /> <property name="recoveryInterval" value="#{${jms.recovery.time.in.seconds} * 1000}" /> </bean> As we are running inside of the WAS J2EE server we are explicitly setting the Cache mode to CACHE_NONE and delegating, connection and session pooling and threading to the WAS Container. Problem: We are observing some strange behavior in that it appears that our application is requiring at least 2x as many connections as expected. i.e. if we set ${jms.concurrent.consumers} = 6 our application will open at least 12 connections only 6 of which appear to be being actively used. If we modify the WAS JCA connection pool settings to enforce a maximum of 6 connections by setting Connection pool size (Max=6 Min=1) Session pool size (Max=1 Min=1) We are seeing that our application is being starved of connections: [24/10/12 10:43:38:746 EST] 0000001b FreePool E J2CA0045E: Connection not available while invoking method createOrWaitForConnection for resource JMS$OTCQCF$JMSManagedConnection@2. [24/10/12 10:43:38:746 EST] 0000002d FreePool E J2CA0045E: Connection not available while invoking method createOrWaitForConnection for resource JMS$OTCQCF$JMSManagedConnection@1. [24/10/12 10:43:38:762 EST] 0000002d SystemOut O 2012-10-24 10:43:38,762 [WorkManager.OTCWorkManager : 7] WARN org.apache.camel.component.jms.DefaultJmsMessageListenerContainer - Setup of JMS message listener invoker failed for destination 'FEED.UNBUNDLED' - trying to recover. Cause: Could not create JMS transaction; nested exception is javax.jms.JMSException: Failed to create session Is anyone running Camel on WAS? If so has anyone observed similar behavior before? Any info you could provide would be much appreciated. Thanks, Patrick Bray -- View this message in context: http://camel.465427.n5.nabble.com/JMS-Component-WebSphere-MQ-Connection-issues-tp5721484.html Sent from the Camel - Users mailing list archive at Nabble.com.