[ 
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)

Reply via email to