activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jason Yankus (Updated) (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (AMQ-3537) ClassLoadingAwareObjectInputStream cannot handle deserializing proxies with mixed JDK & non-JDK interfaces
Date Tue, 11 Oct 2011 18:59:11 GMT

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

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

    Attachment: AMQ3537Test.groovy

AMQ3537Test.groovy is a test case demonstrating the bug.  The list of interfaces at the top
of the test can be manipulated to show that the ClassLoadingAwareObjectInputStream is only
choosing the ClassLoader from the first interface in the array.
                
> 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

        

Mime
View raw message