0

We are connecting from a Tomcat 6 application to IBM MQ 9.0 using JMSTemplate from Spring 2.0.8 and mqjms jar of 7.0.x. Application is very old and being ported from OC4J to Tomcat, that is why is old version of java and libraries are used. JMSTemplate configuration is as below

<bean id="jmsQueueTemplate" class="org.springframework.jms.core.JmsTemplate">
    <property name="connectionFactory" ref="jmsQueueConnectionFactory" />
    <property name="destinationResolver" ref="jmsDestinationResolver" />
    <property name="pubSubDomain" value="false" />
    <property name="receiveTimeout" value="10000" />
    <property name="explicitQosEnabled" value="true" />
    <property name="timeToLive" value="604800000" /><!-- 7 days -->
</bean>


 <bean id="mqConnectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory">
        <property name="port" value="${mqConnectionFactory.port}" />
        <property name="hostName" value="${mqConnectionFactory.hostName}" />
        <property name="channel" value="${mqConnectionFactory.channel}" />
        <property name="queueManager" value="${mqConnectionFactory.queueManager}" />
        <property name="clientID" value="${mqConnectionFactory.clientID}"/>
        <property name="transportType" value="${mqConnectionFactory.transportType}" />
    </bean>
     <bean id="mqQueue" class="com.ibm.mq.jms.MQQueue">
        <property name="baseQueueName" value="${mqQueueName}" />
    </bean>

    <bean id="jmsQueueConnectionFactory" class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter">
        <property name="targetConnectionFactory" ref="mqConnectionFactory" />
        <property name="username" value="${mqUserName}" />
        <property name="password" value="${mqPassword}" />
    </bean>

    <bean id="jmsDestinationResolver" class="org.springframework.jms.support.destination.DynamicDestinationResolver"/>

Once the application is started, threads start hanging and eventually all threads are used. When we take a thread dump, all threads are hanging on

at java.lang.Object.wait(Native Method) 
at com.ibm.mq.jmqi.remote.internal.RemoteHconn.receiveAsyncTsh(RemoteHconn.java:1825) 
- locked [0x00007f49e14cb670] (a com.ibm.mq.jmqi.remote.internal.RemoteHconn$AsyncTshLock) 
at com.ibm.mq.jmqi.remote.internal.RemoteHconn.receiveTSH(RemoteHconn.java:1109) 
at com.ibm.mq.jmqi.remote.internal.RemoteHconn.receiveMQIFlow(RemoteHconn.java:1622) 
at com.ibm.mq.jmqi.remote.internal.RemoteFAP.spiQuerySpi(RemoteFAP.java:5464) 
at com.ibm.mq.jmqi.remote.internal.RemoteHconn.getVerbArray(RemoteHconn.java:3055) 
at com.ibm.mq.jmqi.remote.internal.RemoteFAP.spiOpen(RemoteFAP.java:4821) 
at com.ibm.msg.client.wmq.internal.WMQMessageProducer$SpiIdentifiedProducerShadow.initialise(WMQMessageProducer.java:760) 
at com.ibm.msg.client.wmq.internal.WMQMessageProducer. (WMQMessageProducer.java:977) 
at com.ibm.msg.client.wmq.internal.WMQSession.createProducer(WMQSession.java:965) 
at com.ibm.msg.client.jms.internal.JmsSessionImpl.createProducer(JmsSessionImpl.java:1187) 
- locked [0x00007f49e18cf478] (a java.lang.Object) 
at com.ibm.msg.client.jms.internal.JmsQueueSessionImpl.createSender(JmsQueueSessionImpl.java:131) 
at com.ibm.mq.jms.MQQueueSession.createSender(MQQueueSession.java:148) 
at com.ibm.mq.jms.MQQueueSession.createProducer(MQQueueSession.java:249) 
at org.springframework.jms.core.JmsTemplate.doCreateProducer(JmsTemplate.java:851) 
at org.springframework.jms.core.JmsTemplate.createProducer(JmsTemplate.java:832) 
at org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:509) 
at org.springframework.jms.core.JmsTemplate$2.doInJms(JmsTemplate.java:482) 
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:437) 
at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:480) 

Since the versions used except IBM MQ are old, it is very hard to get any help. Could anyone throw some light on this issue and a possible solution?

  • MQ 7.0.1 is also out of support since September 30 2015. – JoshMc Jan 02 '20 at 18:35
  • You can't mix versions of the `com.ibm.mq*.jar` files. – JoshMc Jan 02 '20 at 18:36
  • I am not mixing different versions of ibm mq jar. I am only using 7.0. MQ server is in 9 version. As per IBM compatibility webpage 7.0 jar works with 9 server. – Anish K George Jan 03 '20 at 07:26
  • As long as all jar files are from the same version it should work, but as stated it has not had standard support in over 4 years. You should make sure you are at the latest 7.0.1.14 fixpack as well if you want to go unsupported. – JoshMc Jan 03 '20 at 07:33

0 Answers0