[
https://issues.jboss.org/browse/AS7-1271?page=com.atlassian.jira.plugin.s...
]
Rasto Cesnek edited comment on AS7-1271 at 7/24/12 12:25 PM:
-------------------------------------------------------------
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:]
was (Author: erce):
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