Using FMW 11.1.1.4.0 JMS Adapter with MQ: ERRJMS_CONN_FAC_NOT_FOUND, "JMS adapter was unable to look up the connection factory XXX through JNDI nor instantiate it as a Java class" (Doc ID 1346775.1)

Last updated on AUGUST 08, 2017

Applies to:

Oracle SOA Platform - Version 11.1.1.4.0 and later
Information in this document applies to any platform.

Symptoms

You have an installation of Oracle Fusion Middleware 11g Release 1 Patchset 3 (11.1.1.4.0) where you have developed and deployed composites that leverage the Oracle JMS Adapter to access JMS messages that are utilizing IBM WebSphere MQ for message transport/persistence services.

The composite application is polling for the arrival of messages that have been created to follow a publish/subscribe paradigm and are therefore stored within an IBM WebSphere MQ Topic. The composite application deploys successfully but at execution time, within the diagnostic log for the SOA managed server (${DOMAIN_HOME}/servers/soa_server1/logs/soa_server1-diagnostic.log) you receive the following exception stack each time the JMS Adapter attempts to poll MQ for an available message:

[2011-07-28T00:35:25.282-04:00] [soa_server1] [WARNING] [] [oracle.soa.adapter]
[tid: weblogic.work.j2ee.J2EEWorkManager$WorkWithListener@c723f8]
[userId: <anonymous>] [ecid: 0000J5j0mb0Fo2f_TXT4ic1ECEOe000002,1:16751] [APP: soa-infra]
JMSAdapter READ_MSGS_FROM_TOPIC [[
BINDING.JCA-12141
ERRJMS_CONN_FAC_NOT_FOUND.
ERRJMS_CONN_FAC_NOT_FOUND.
Unable to instantiate connection factory. JMS adapter was unable to look up the connection factory
com.ibm.mq.jms.MQTopicConnectionFactory neither through JNDI nor instantiate it as a Java class.
Please examine the log file to determine the problem.

at oracle.tip.adapter.jms.JMS.JMSConnectionFactoryFactory.getConnectionFactory(JMSConnectionFactoryFactory.java:207)
at oracle.tip.adapter.jms.JMS.JMSConnectionFactoryFactory.getTopicConnectionFactory(JMSConnectionFactoryFactory.java:104)
at oracle.tip.adapter.jms.JMS.JMSConnection.init(JMSConnection.java:124)
at oracle.tip.adapter.jms.JMS.JMSConnection.<init>(JMSConnection.java:113)
at oracle.tip.adapter.jms.JmsManagedConnectionFactory.createConnection(JmsManagedConnectionFactory.java:313)
at oracle.tip.adapter.jms.JmsManagedConnectionFactory.createDefaultConnection(JmsManagedConnectionFactory.java:305)
at oracle.tip.adapter.jms.JmsManagedConnectionFactory.createConnection(JmsManagedConnectionFactory.java:286)
at oracle.tip.adapter.jms.JmsManagedConnectionFactory.createManagedConnection(JmsManagedConnectionFactory.java:92)
at weblogic.connector.security.layer.AdapterLayer.createManagedConnection(AdapterLayer.java:803)
at weblogic.connector.outbound.ConnectionFactory.createResource(ConnectionFactory.java:91)
at weblogic.common.resourcepool.ResourcePoolImpl.makeResources(ResourcePoolImpl.java:1249)
at weblogic.common.resourcepool.ResourcePoolImpl.reserveResourceInternal(ResourcePoolImpl.java:418)
at weblogic.common.resourcepool.ResourcePoolImpl.reserveResource(ResourcePoolImpl.java:342)
at weblogic.common.resourcepool.ResourcePoolImpl.reserveResource(ResourcePoolImpl.java:322)
at weblogic.connector.outbound.ConnectionPool.reserveResource(ConnectionPool.java:620)
at weblogic.common.resourcepool.ResourcePoolImpl.reserveResource(ResourcePoolImpl.java:316)
at weblogic.connector.outbound.ConnectionManagerImpl.getConnectionInfo(ConnectionManagerImpl.java:380)
at weblogic.connector.outbound.ConnectionManagerImpl.getConnection(ConnectionManagerImpl.java:320)
at weblogic.connector.outbound.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:129)
at oracle.tip.adapter.jms.JmsConnectionFactory.getConnection(JmsConnectionFactory.java:93)
at oracle.tip.adapter.jms.JMS.JMSMessageConsumer.createConsumer(JMSMessageConsumer.java:321)
at oracle.tip.adapter.jms.JMS.JMSMessageConsumer.init(JMSMessageConsumer.java:920)
at oracle.tip.adapter.jms.inbound.JmsConsumer.init(JmsConsumer.java:894)
at oracle.tip.adapter.jms.JmsEndpoint.run(JmsEndpoint.java:147)
at oracle.tip.adapter.jms.JmsEndpoint.start(JmsEndpoint.java:125)
at oracle.tip.adapter.jms.JmsResourceAdapter.activateNonWLSEndpoint(JmsResourceAdapter.java:240)
at oracle.tip.adapter.jms.JmsResourceAdapter.endpointActivation(JmsResourceAdapter.java:146)
at oracle.integration.platform.blocks.adapter.fw.impl.AdapterFrameworkImpl.endpointActivation(AdapterFrameworkImpl.java:494)
at oracle.integration.platform.blocks.adapter.fw.jca.lifecycle.JCAEndpointActivation.performEndpointActivation(JCAEndpointActivation.java:637)
at oracle.integration.platform.blocks.adapter.fw.jca.lifecycle.JCAEndpointActivation.activateInboundJcaEndpoint(JCAEndpointActivation.java:620)
at oracle.integration.platform.blocks.adapter.fw.jca.lifecycle.JCAEndpointActivation.performActivation(JCAEndpointActivation.java:383)
at oracle.integration.platform.blocks.adapter.fw.metadata.AdapterServiceRevisionRegistry$AdapterServiceRevision.endpointActivation(AdapterServiceRevisionRegistry.java:583)
at oracle.integration.platform.blocks.adapter.fw.metadata.AdapterServiceRevisionRegistry$AdapterServiceRevision.activate(AdapterServiceRevisionRegistry.java:438)
at oracle.integration.platform.blocks.adapter.fw.metadata.AdapterServiceRevisionRegistry$AdapterServiceRevision.setDefaultRevision(AdapterServiceRevisionRegistry.java:403)
at oracle.integration.platform.blocks.adapter.fw.metadata.AdapterServiceRevisionRegistry$AdapterServiceSeries.setDefaultRevision(AdapterServiceRevisionRegistry.java:328)
at oracle.integration.platform.blocks.adapter.fw.metadata.AdapterServiceRevisionRegistry$AdapterServiceSeriesSet.setDefaultRevision(AdapterServiceRevisionRegistry.java:134)
at oracle.integration.platform.blocks.adapter.fw.metadata.AdapterServiceRevisionRegistry.setDefaultRevision(AdapterServiceRevisionRegistry.java:96)
at oracle.integration.platform.blocks.adapter.AdapterService.defaultRevisionChanged(AdapterService.java:309)
at oracle.integration.platform.kernel.FabricKernelInitializerServlet$1.processDefaultInSeries(FabricKernelInitializerServlet.java:577)
at oracle.integration.platform.kernel.FabricKernelInitializerServlet$1.run(FabricKernelInitializerServlet.java:526)
at oracle.integration.platform.blocks.executor.WorkManagerExecutor$1.run(WorkManagerExecutor.java:120)
at weblogic.work.j2ee.J2EEWorkManager$WorkWithListener.run(J2EEWorkManager.java:183)
at weblogic.work.DaemonWorkThread.run(DaemonWorkThread.java:30)
Caused by: javax.naming.NameNotFoundException: While trying to lookup 'com.ibm.mq.jms.MQTopicConnectionFactory' didn't find subcontext 'com'. Resolved ''; remaining name 'com/ibm/mq/jms/MQTopicConnectionFactory'
at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1139)
at weblogic.jndi.internal.BasicNamingNode.lookupHere(BasicNamingNode.java:247)
at weblogic.jndi.internal.ServerNamingNode.lookupHere(ServerNamingNode.java:182)
at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:206)
at weblogic.jndi.internal.WLEventContextImpl.lookup(WLEventContextImpl.java:254)
at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:411)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at oracle.tip.adapter.jms.JMS.JMSConnectionFactoryFactory.getConnectionFactory(JMSConnectionFactoryFactory.java:132)
... 42 more

]]


NOTE:

The same issue can be encountered with multiple different connection factory classes, such as:
  • com.ibm.mq.jms.MQTopicConnectionFactory
  • com.ibm.mq.jms.MQXATopicConnectionFactory
  • com.ibm.mq.jms.MQQueueConnectionFactory
  • com.ibm.mq.jms.MQXAQueueConnectionFactory

Changes

You may have recently migrated from Oracle Fusion Middleware 11g Release 1 Patchset 2 (11.1.1.3.0) to Oracle Fusion Middleware 11g Release 1 Patchset 3 (11.1.1.4.0)

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms