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

Rasto Cesnek (JIRA) jira-events at lists.jboss.org
Wed Jul 25 06:14:07 EDT 2012


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

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

Hi Jeff.

The Xerces (2.9.1-XYZ.jar) here comes directly from JBoss 7.1.1 modules. The EAR, EJB nor the WAR bundles any Xerces implementation.

The servlet creates a Document object using DocumentBuilderFactory.DocumentBuilder (this then gets sent to the MDB using the other bean in the EJB module.
What is strange though, other code in the EJB module also creates Document instances using DocumentBuilderFactoy.DocumentBuilder without problems, so the EJB module has Xerces available on class path (implicitly added as dependency).

I tried fixing this issue with explicit dependency in EAR/MANIFEST-MF:
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.1">
	<ear-subdeployments-isolated>false</ear-subdeployments-isolated>
	<deployment>
		<dependencies>
			<module name="org.apache.xerces" export="true" />
		</dependencies>
...
this does the trick.

What I still do not understand though is, why can I create instances of the Document in the EJB module but I cannot deserialize an existing one. It is sort of contra-intuitive I will have a look to the link you provided to see if it explains the issue.
                
> 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