JMS connection to Queue Factory - null pointer exception in 8.6.1

Hi All,

We have upgraded JMS listeners and JMS-Connectors from Pega 7.2 to Pega 8.6.1 platform with smart investigate frameworks. After that, we are facing the below exception in the JMS connection, please suggest a solution if you’d have faced the same.

Exception : Couldn’t resolve JMS connection factory object ‘java:comp/env/jms/PEGAQueueConFactory’ from JNDI server at , javax.naming.NamingException: Unexpected exception resolving reference [Root exception is java.lang.NullPointerException]

We have migrated from WAS-based setup to Openshift Container-based platform where Pega is running on Tomcat App server. The following configurations are defined in the context.xml file and web.xml file.

web.xml file :

PEGAQueueConFactory

jms/PEGAQueueConFactory

javax.jms.QueueConnectionFactory

Container

Shareable

context.xml file :

Detail Exception :

WorkQueueMananger Contents

| Maintain ThreadPool size :- false
| Maximum ThreadPool size :- -1
| ThreadPool inactive timeout :- 0
| unavailable - :- com.ibm.msg.client.commonservices.CSIException: JMSCS0002

Stack trace to show the location of the FFST call
| FFST Location :- java.lang.Exception
| at com.ibm.msg.client.commonservices.trace.Trace.getCurrentPosition(Trace.java:2143)
| at com.ibm.msg.client.commonservices.trace.Trace.createFFSTString(Trace.java:2053)
| at com.ibm.msg.client.commonservices.trace.Trace.ffstInternal(Trace.java:1935)
| at com.ibm.msg.client.commonservices.trace.Trace.ffst(Trace.java:1736)
| at com.ibm.msg.client.commonservices.nls.PINLSServices.createException(PINLSServices.java:112)
| at com.ibm.msg.client.commonservices.nls.NLSServices.createException(NLSServices.java:226)
| at com.ibm.msg.client.jms.internal.JmsErrorUtils.createException(JmsErrorUtils.java:126)
| at com.ibm.msg.client.jms.internal.JmsFactoryFactoryImpl.getInstance(JmsFactoryFactoryImpl.java:168)
| at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
| at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
| at java.base/java.lang.reflect.Method.invoke(Method.java:566)
| at com.ibm.msg.client.jms.JmsFactoryFactory.getInstance(JmsFactoryFactory.java:173)
| at com.ibm.mq.jms.MQConnectionFactory.initialiseMQConnectionFactory(MQConnectionFactory.java:3218)
| at com.ibm.mq.jms.MQConnectionFactory.(MQConnectionFactory.java:260)
| at com.ibm.mq.jms.MQQueueConnectionFactory.(MQQueueConnectionFactory.java:72)
| at com.ibm.mq.jms.MQQueueConnectionFactoryFactory.getObjectInstance(MQQueueConnectionFactoryFactory.java:69)
| at org.apache.naming.factory.FactoryBase.getObjectInstance(FactoryBase.java:96)
| at java.naming/javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:341)
| at org.apache.naming.NamingContext.lookup(NamingContext.java:864)
| at org.apache.naming.NamingContext.lookup(NamingContext.java:158)
| at org.apache.naming.NamingContext.lookup(NamingContext.java:850)
| at org.apache.naming.NamingContext.lookup(NamingContext.java:158)
| at org.apache.naming.NamingContext.lookup(NamingContext.java:850)
| at org.apache.naming.NamingContext.lookup(NamingContext.java:158)
| at org.apache.naming.NamingContext.lookup(NamingContext.java:850)
| at org.apache.naming.NamingContext.lookup(NamingContext.java:172)
| at org.apache.naming.SelectorContext.lookup(SelectorContext.java:161)
| at java.naming/javax.naming.InitialContext.lookup(InitialContext.java:409)
| at com.pega.pegarules.integration.engine.internal.services.jms.JMSListener.initializeConnection(JMSListener.java:1035)
| at com.pega.pegarules.integration.engine.internal.services.jms.JMSListener.runPoller(JMSListener.java:760)
| at com.pega.pegarules.integration.engine.internal.services.jms.JMSListener.run_(JMSListener.java:755)
| at com.pega.pegarules.integration.engine.internal.services.listener.ServiceListenerBaseImpl.run(ServiceListenerBaseImpl.java:476)
| at java.base/java.lang.Thread.run(Thread.java:829)


Product :- ProductName
Date/Time :- Fri Oct 01 16:49:42 AEST 2021
System time :- 1633070982326
Operating System :- Linux
UserID :- ***user
Java Vendor :- AdoptOpenJDK
Java Version :- 11.0.11+9

Source Class :- JmsFactoryFactory
Source Method :- getIntance(int)
ProbeID :- XI001005
Thread :- name=JMS-Thread-100 priority=5 group=main ccl=com.pega.pegarules.bootstrap.loader.PRAppLoader@2c7fff1b

Data

| connectionTypeName :- com.ibm.msg.client.wmq
| exception :- ExceptionDepth is 3
| exception :-
| | Cause:1 :- java.lang.reflect.InvocationTargetException
| | Cause:2 :- java.lang.NullPointerException
| | StackTrace:1 :- java.lang.reflect.InvocationTargetException
| | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
| | at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
| | at java.base/java.lang.reflect.Method.invoke(Method.java:566)
| | at com.ibm.msg.client.jms.JmsFactoryFactory.getInstance(JmsFactoryFactory.java:173)
| | at com.ibm.mq.jms.MQConnectionFactory.initialiseMQConnectionFactory(MQConnectionFactory.java:3218)
| | at com.ibm.mq.jms.MQConnectionFactory.(MQConnectionFactory.java:260)
| | at com.ibm.mq.jms.MQQueueConnectionFactory.(MQQueueConnectionFactory.java:72)
| | at com.ibm.mq.jms.MQQueueConnectionFactoryFactory.getObjectInstance(MQQueueConnectionFactoryFactory.java:69)
| | at org.apache.naming.factory.FactoryBase.getObjectInstance(FactoryBase.java:96)
| | at java.naming/javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:341)
| | at org.apache.naming.NamingContext.lookup(NamingContext.java:864)
| | at org.apache.naming.NamingContext.lookup(NamingContext.java:158)
| | at org.apache.naming.NamingContext.lookup(NamingContext.java:850)
| | at org.apache.naming.NamingContext.lookup(NamingContext.java:158)
| | at org.apache.naming.NamingContext.lookup(NamingContext.java:850)
| | at org.apache.naming.NamingContext.lookup(NamingContext.java:158)
| | at org.apache.naming.NamingContext.lookup(NamingContext.java:850)
| | at org.apache.naming.NamingContext.lookup(NamingContext.java:172)
| | at org.apache.naming.SelectorContext.lookup(SelectorContext.java:161)
| | at java.naming/javax.naming.InitialContext.lookup(InitialContext.java:409)
| | at com.pega.pegarules.integration.engine.internal.services.jms.JMSListener.initializeConnection(JMSListener.java:1035)
| | at com.pega.pegarules.integration.engine.internal.services.jms.JMSListener.runPoller(JMSListener.java:760)
| | at com.pega.pegarules.integration.engine.internal.services.jms.JMSListener.run_(JMSListener.java:755)
| | at com.pega.pegarules.integration.engine.internal.services.listener.ServiceListenerBaseImpl.run(ServiceListenerBaseImpl.java:476)
| | at java.base/java.lang.Thread.run(Thread.java:829)
| | Caused by: java.lang.NullPointerException
| | at com.ibm.msg.client.jms.internal.JmsFactoryFactoryImpl.getInstance(JmsFactoryFactoryImpl.java:170)
| | … 26 more
| |
| | StackTrace:2 :- java.lang.NullPointerException
| | at com.ibm.msg.client.jms.internal.JmsFactoryFactoryImpl.getInstance(JmsFactoryFactoryImpl.java:170)
| | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
| | at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
| | at java.base/java.lang.reflect.Method.invoke(Method.java:566)
| | at com.ibm.msg.client.jms.JmsFactoryFactory.getInstance(JmsFactoryFactory.java:173)
| | at com.ibm.mq.jms.MQConnectionFactory.initialiseMQConnectionFactory(MQConnectionFactory.java:3218)
| | at com.ibm.mq.jms.MQConnectionFactory.(MQConnectionFactory.java:260)
| | at com.ibm.mq.jms.MQQueueConnectionFactory.(MQQueueConnectionFactory.java:72)
| | at com.ibm.mq.jms.MQQueueConnectionFactoryFactory.getObjectInstance(MQQueueConnectionFactoryFactory.java:69)
| | at org.apache.naming.factory.FactoryBase.getObjectInstance(FactoryBase.java:96)
| | at java.naming/javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:341)
| | at org.apache.naming.NamingContext.lookup(NamingContext.java:864)
| | at org.apache.naming.NamingContext.lookup(NamingContext.java:158)
| | at org.apache.naming.NamingContext.lookup(NamingContext.java:850)
| | at org.apache.naming.NamingContext.lookup(NamingContext.java:158)
| | at org.apache.naming.NamingContext.lookup(NamingContext.java:850)
| | at org.apache.naming.NamingContext.lookup(NamingContext.java:158)
| | at org.apache.naming.NamingContext.lookup(NamingContext.java:850)
| | at org.apache.naming.NamingContext.lookup(NamingContext.java:172)
| | at org.apache.naming.SelectorContext.lookup(SelectorContext.java:161)
| | at java.naming/javax.naming.InitialContext.lookup(InitialContext.java:409)
| | at com.pega.pegarules.integration.engine.internal.services.jms.JMSListener.initializeConnection(JMSListener.java:1035)
| | at com.pega.pegarules.integration.engine.internal.services.jms.JMSListener.runPoller(JMSListener.java:760)
| | at com.pega.pegarules.integration.engine.internal.services.jms.JMSListener.run_(JMSListener.java:755)
| | at com.pega.pegarules.integration.engine.internal.services.listener.ServiceListenerBaseImpl.run(ServiceListenerBaseImpl.java:476)
| | at java.base/java.lang.Thread.run(Thread.java:829)
| |
No Components Found

@Anurathan_K as Pega GCS requested ran the following query to clean up the conflicting IBM jar library classes from the engine table, and then the issue has gone.

delete from PEGA_RULES.PR_ENGINECLASSES where pzjar in (‘mq-6.0.jar’, ‘allclient-8.0.0.jar’);

Please back up the DB and perform the deletion step.

This issue is related to Pega 8.6.1 platform.