ClassLoadingAwareObjectInputStream cannot handle deserializing proxies with
mixed JDK & non-JDK interfaces
----------------------------------------------------------------------------------------------------------
Key: AMQ-3537
URL: https://issues.apache.org/jira/browse/AMQ-3537
Project: ActiveMQ
Issue Type: Bug
Components: JMS client
Affects Versions: 5.5.0
Environment: RHEL 6.0, ActiveMQ 5.5.0, Tomcat 7, Hibernate
3.6.7.Final, Spring 3.0.3.RELEASE
Reporter: Jason Yankus
When the ActiveMQ client attempts to unpack an ObjectMessage that contains a
proxy with a mix of JDK and non-JDK interfaces the
ClassLoadingAwareObjectInputStream chooses ONLY the ClassLoader from the first
interface in the array of interfaces represented by the proxy. This means that
if a proxy's first interface is a JDK class (java.util.List, java.sql.Blob) the
core ClassLoader is used. In the event that a non-JDK interface is present in
the list of proxied interfaces the same core classloader is used. The
Proxy.getProxyClass subsequently throws an IllegalArgumentException because the
non-JDK interface class cannot be loaded by the core classloader.
This problem is extant during deserialization of an ObjectMessage payload that
contains a proxy that implements [java.sql.Blob,
org.hibernate.engine.jdbc.WrappedBlob, java.io.Serializable] (a blob proxy
created by [hibernate
SerializableBlobProxy|https://github.com/hibernate/hibernate-core/blob/3.6.7.Final/hibernate-core/src/main/java/org/hibernate/engine/jdbc/SerializableBlobProxy.java]).
The impact of this bug is that users of Hibernate cannot use ActiveMQ as a
messaging framework if they need to package ValueObjects that have mapped lobs.
--
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