[ 
https://issues.apache.org/jira/browse/AMQ-3537?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jason Yankus updated AMQ-3537:
------------------------------

    Description: 
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. 
 

  was:
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. 
 

    
> 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
>         Attachments: AMQ3537Test.groovy
>
>
> 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

        

Reply via email to