[
https://issues.apache.org/jira/browse/QPID-3735?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Weston M. Price updated QPID-3735:
----------------------------------
Attachment: QPID-3735.patch
Fixes JNDI/Classloading issues on endpoint activation.
> QpidActivation.start() should not use the JCA WorkManager API control due to
> JNDI/Classloading issues
> -----------------------------------------------------------------------------------------------------
>
> Key: QPID-3735
> URL: https://issues.apache.org/jira/browse/QPID-3735
> Project: Qpid
> Issue Type: Bug
> Components: JCA
> Environment: All OS platforms, all supported JEE platforms other than
> JBoss EAP.
> Reporter: Weston M. Price
> Fix For: 0.15
>
> Attachments: QPID-3735.patch
>
>
> There is an issue with the QpidActivation.start() method using the JCA
> WorkManager/Work API to asynchronously activate the endpoint (MDB basically).
> When the WorkManager creates a new thread the context classloader does not
> contain the class files from the RAR. As a result, when we attempt to lookup
> the Destination from JNDI to begin delivery of messages to the endpoint, a
> javax.naming.Reference is returned versus the actual object the Reference
> represents. Further, the ObjectFactory that has been set to create the
> Reference cannot be located by the WorkManager class loader and as a result,
> we get a ClassCastException if we don't manually re-create the Destination
> objects.
> I have noted this behavior in both Geronimo, Glassfish and Weblogic. Note, it
> works in JBoss EAP largely 'by accident' due to differences in the EAP
> classloading architecture (flat versus hierarchal).
> The solution is to start our own thread in the QpidActivation.start() method
> as opposed to using the WorkManager API. Our use of the WorkManager/Work API
> is very limited in that we don't rely on the Work ExcecutionContext or any
> callback methods, we are simply using it so as to be able to deploy multiple
> endpoints in parallel without blocking. Starting our own thread achieves the
> same result without the extra work involved when we use the WorkManager API.
> This solution would go a long way to simplifying the examples across multiple
> application servers in handling JNDI access with inbound connectivity.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:[email protected]