Mark Payne created NIFI-5741:
--------------------------------

             Summary: JndiJmsConnectionFactory does not properly wrap returned 
ConnectionFactory with ClassLoader-specific proxy
                 Key: NIFI-5741
                 URL: https://issues.apache.org/jira/browse/NIFI-5741
             Project: Apache NiFi
          Issue Type: Bug
          Components: Extensions
    Affects Versions: 1.8.0
            Reporter: Mark Payne
            Assignee: Mark Payne


The JndiJmsConnectionFactory controller service looks up a JMS Connection 
Factory via JNDI. It then returns this Connection Factory to be used by the JMS 
Processors. While the JMS Processors live in the same NAR, the instance of the 
JMS Processor will live have a different NAR Context Class Loader if the JNDI 
JMS Connection Factory is configured with classes that modify its class path.

As a result, the JMS Processors can have the wrong class path when calling 
ConnectionFactory#createConnection, which can cause some very odd behavior. 
When attempting to connect to WebLogic, for instance, I got the following stack 
trace:

{{2018-10-23 11:53:53,803 ERROR [Timer-Driven Process Thread-6] 
o.apache.nifi.jms.processors.PublishJMS 
PublishJMS[id=a191db80-0166-1000-77ff-aaaf7616fcb1] Failed while sending 
message to JMS via JMSPublisher[destination:null; pub-sub:true;]: 
org.springframework.jms.UncategorizedJmsException: Uncategorized exception 
occurred during JMS processing; nested exception is 
weblogic.jms.common.JMSException: [JMSClientExceptions:055053]Error creating 
connection to the server: java.rmi.UnmarshalException: failed to unmarshal 
class weblogic.jms.client.JMSConnection; nested exception is:}}
{{ java.io.UTFDataFormatException.}}
{{java.rmi.UnmarshalException: failed to unmarshal class 
weblogic.jms.client.JMSConnection; nested exception is:}}
{{ java.io.UTFDataFormatException}}
{{ at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:266)}}
{{ at 
weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:477)}}
{{ at 
weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:285)}}
{{ at 
weblogic.jms.frontend.FEConnectionFactoryImpl_12213_WLStub.connectionCreate(Unknown
 Source)}}
{{ at 
weblogic.jms.client.JMSConnectionFactory.setupJMSConnection(JMSConnectionFactory.java:269)}}
{{ at 
weblogic.jms.client.JMSConnectionFactory.createConnectionInternal(JMSConnectionFactory.java:359)}}
{{ at 
weblogic.jms.client.JMSConnectionFactory.createConnection(JMSConnectionFactory.java:210)}}
{{ at 
org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter.doCreateConnection(UserCredentialsConnectionFactoryAdapter.java:181)}}
{{ at 
org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter.createConnection(UserCredentialsConnectionFactoryAdapter.java:152)}}
{{ at 
org.springframework.jms.connection.SingleConnectionFactory.doCreateConnection(SingleConnectionFactory.java:366)}}
{{ at 
org.springframework.jms.connection.SingleConnectionFactory.initConnection(SingleConnectionFactory.java:306)}}
{{ at 
org.springframework.jms.connection.SingleConnectionFactory.getConnection(SingleConnectionFactory.java:284)}}
{{ at 
org.springframework.jms.connection.SingleConnectionFactory.createConnection(SingleConnectionFactory.java:225)}}
{{ at 
org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:180)}}
{{ at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:474)}}
{{ at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:570)}}
{{ at 
org.apache.nifi.jms.processors.JMSPublisher.publish(JMSPublisher.java:56)}}
{{ at 
org.apache.nifi.jms.processors.PublishJMS.rendezvousWithJms(PublishJMS.java:131)}}
{{ at 
org.apache.nifi.jms.processors.PublishJMS.rendezvousWithJms(PublishJMS.java:60)}}
{{ at 
org.apache.nifi.jms.processors.AbstractJMSProcessor.onTrigger(AbstractJMSProcessor.java:159)}}
{{ at org.apache.nifi.jms.processors.PublishJMS.onTrigger(PublishJMS.java:60)}}
{{ at 
org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)}}
{{ at 
org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1165)}}
{{ at 
org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:203)}}
{{ at 
org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:117)}}
{{ at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)}}
{{ at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)}}
{{ at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)}}
{{ at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)}}
{{ at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)}}
{{ at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)}}
{{ at java.lang.Thread.run(Thread.java:745)}}
{{Caused by: java.io.UTFDataFormatException}}
{{ at 
java.io.ObjectInputStream$BlockDataInputStream.readUTFSpan(ObjectInputStream.java:3137)}}
{{ at 
java.io.ObjectInputStream$BlockDataInputStream.readUTFBody(ObjectInputStream.java:3062)}}
{{ at 
java.io.ObjectInputStream$BlockDataInputStream.readUTF(ObjectInputStream.java:2874)}}
{{ at java.io.ObjectInputStream.readUTF(ObjectInputStream.java:1073)}}
{{ at 
weblogic.messaging.dispatcher.DispatcherUtils.readVersionedPartitionInfo(DispatcherUtils.java:185)}}
{{ at 
weblogic.messaging.dispatcher.DispatcherWrapper.readExternal(DispatcherWrapper.java:236)}}
{{ at weblogic.jms.client.JMSConnection.readExternal(JMSConnection.java:2481)}}
{{ at java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1842)}}
{{ at 
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1799)}}
{{ at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)}}
{{ at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)}}
{{ at 
weblogic.utils.io.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:208)}}
{{ at 
weblogic.rjvm.MsgAbbrevInputStream.readObject(MsgAbbrevInputStream.java:602)}}
{{ at 
weblogic.utils.io.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:204)}}
{{ at weblogic.rmi.internal.ObjectIO.readObject(ObjectIO.java:62)}}
{{ at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:264)}}
{{ ... 31 more}}

 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to