[jboss-jira] [JBoss JIRA] (AS7-1271) Fired object messages violate classloaders

Rasto Cesnek (JIRA) jira-events at lists.jboss.org
Tue Jul 24 12:24:09 EDT 2012


    [ https://issues.jboss.org/browse/AS7-1271?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12707602#comment-12707602 ] 

Rasto Cesnek commented on AS7-1271:
-----------------------------------

I face a similar problem with JBoss 7.1.1.Final in a different scenario. How does this relate to this issue, is it the same bug or is my application badly packaged?

I have:
EAR
 |- EJB module
 |   |- Some custom serialize-able class A, where one field is org.w3c.dom.Document, other fields are other classes from EJB module
 |   |- An EJB with a business method busMethod(org.w3c.dom.Document input) which sends an object message with object of type A through JMS
 |   \- MDB waiting an object message of type A
 \- WAR module
     \- A servlet which calls the EJB.busMethod from the EJB module with an instance of org.w3c.dom.Document

The instance of org.w3c.dom.Document is actually org.apache.xerces.dom.DeferredDocumentImpl.

I can see that the org.hornetq.utils.ObjectInputStreamWithClassLoader sets the class loader to the module loader of the EJB module, the lookup fails anyway and super.resolveClass(desc) (which is the last application defined loader hornetq module loader) gets called.

The result of the call is exception:

Caused by: javax.jms.JMSException: org.apache.xerces.dom.DeferredDocumentImpl from [Module "org.hornetq:main" from local module loader @538d7ace (roots: C:\jboss-as-7.1.1.Final\modules)]
        at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
        at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
        at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
        at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:423)
        at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
        at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
        at java.lang.Class.forName0(Native Method) [rt.jar:1.6.0_33]
        at java.lang.Class.forName(Class.java:247) [rt.jar:1.6.0_33]
        at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:603) [rt.jar:1.6.0_33]
        at org.hornetq.utils.ObjectInputStreamWithClassLoader.resolveClass(ObjectInputStreamWithClassLoader.java:71)
        at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1574) [rt.jar:1.6.0_33]
        at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495) [rt.jar:1.6.0_33]
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731) [rt.jar:1.6.0_33]
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) [rt.jar:1.6.0_33]
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946) [rt.jar:1.6.0_33]
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870) [rt.jar:1.6.0_33]
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) [rt.jar:1.6.0_33]
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) [rt.jar:1.6.0_33]
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) [rt.jar:1.6.0_33]
        at org.hornetq.jms.client.HornetQObjectMessage.getObject(HornetQObjectMessage.java:158)
        at test.A(MDB.java:56) [EJB.jar:]

                
> Fired object messages violate classloaders
> ------------------------------------------
>
>                 Key: AS7-1271
>                 URL: https://issues.jboss.org/browse/AS7-1271
>             Project: Application Server 7
>          Issue Type: Bug
>          Components: JMS
>            Reporter: John Ament
>            Assignee: Jeff Mesnil
>             Fix For: 7.2.0.Alpha1
>
>
> JMS allows you to fire an object message.  In this case, I have a object of type in my deployment.  It fires fine.  I bind a message consumer to a queue in AS7.  the object message coming in results in a classloader violation:
> 22:13:35,116 ERROR [org.jboss.seam.jms.example.statuswatcher.messagedriven.DistributorMDB] (Thread-2 (group:HornetQ-client-global-threads-767046602)) org.jboss.seam.jms.example.statuswatcher.model.Status from [Module "org.hornetq:main" from local module loader @19d009b4 (roots: /apps/jboss-as-7.0.0.Final/modules)]: javax.jms.JMSException: org.jboss.seam.jms.example.statuswatcher.model.Status from [Module "org.hornetq:main" from local module loader @19d009b4 (roots: /apps/jboss-as-7.0.0.Final/modules)]
> 	at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:191)
> 	at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:358)
> 	at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:330)
> 	at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:307)
> 	at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:101)
> 	at java.lang.Class.forName0(Native Method) [:1.6.0_22]
> 	at java.lang.Class.forName(Class.java:247) [:1.6.0_22]
> 	at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:603) [:1.6.0_22]
> 	at org.hornetq.utils.ObjectInputStreamWithClassLoader.resolveClass(ObjectInputStreamWithClassLoader.java:69) [hornetq-core-2.2.6.Final.jar:]
> 	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1574) [:1.6.0_22]
> 	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495) [:1.6.0_22]
> 	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731) [:1.6.0_22]
> 	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) [:1.6.0_22]
> 	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) [:1.6.0_22]
> 	at org.hornetq.jms.client.HornetQObjectMessage.getObject(HornetQObjectMessage.java:158) [hornetq-jms-2.2.6.Final.jar:]
> 	at org.jboss.seam.jms.example.statuswatcher.messagedriven.DistributorMDB.onMessage(DistributorMDB.java:46)
> 	at org.hornetq.jms.client.JMSMessageListenerWrapper.onMessage(JMSMessageListenerWrapper.java:91) [hornetq-jms-2.2.6.Final.jar:]
> 	at org.hornetq.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:866) [hornetq-core-2.2.6.Final.jar:]
> 	at org.hornetq.core.client.impl.ClientConsumerImpl.access$100(ClientConsumerImpl.java:44) [hornetq-core-2.2.6.Final.jar:]
> 	at org.hornetq.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:983) [hornetq-core-2.2.6.Final.jar:]
> 	at org.hornetq.utils.OrderedExecutorFactory$OrderedExecutor$1.run(OrderedExecutorFactory.java:100) [hornetq-core-2.2.6.Final.jar:]
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_22]
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_22]
> 	at java.lang.Thread.run(Thread.java:662) [:1.6.0_22]

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the jboss-jira mailing list