[
https://issues.apache.org/jira/browse/NIFI-5741?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Bryan Bende updated NIFI-5741:
------------------------------
Resolution: Fixed
Fix Version/s: 1.9.0
Status: Resolved (was: Patch Available)
> 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
> Priority: Major
> Fix For: 1.9.0
>
>
> 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)