[
https://issues.jboss.org/browse/AS7-799?page=com.atlassian.jira.plugin.sy...
]
Stuart Douglas commented on AS7-799:
------------------------------------
The problem is that with JBoss modules there may not actually exist a single class loader
that can see all the classes that are needed to de-serialize the object graph.
Say we have 3 modules ModuleA, ModuleB and ModuleC, where ModuleA depends on ModuleB, and
ModuleB depends on ModuleC (so ModuleA cannot see ModuleC's classes).
If you then have a class from ModuleA that references a class from ModuleB that references
a class from ModuleC there is no class loader availible that can see all three classes.
JBoss marshaling gets around this by encoding the module that the class belongs to into
the serialized form.
Wrong Classloader Used When Deserializing Persisted Sessions
------------------------------------------------------------
Key: AS7-799
URL:
https://issues.jboss.org/browse/AS7-799
Project: Application Server 7
Issue Type: Bug
Components: Web
Affects Versions: 7.0.0.Beta3
Reporter: Benjamin Browning
Assignee: Remy Maucherat
The org.jboss.as.web:main module's classloader is being used when deserializing
persisted sessions instead of the deployment's classloader. This leads to errors like
the one below when any classes are referenced in the session that aren't in the
dependency list of org/jboss/as/web/main/module.xml.
21:02:50,824 ERROR [org.apache.catalina.session.ManagerBase] (MSC service thread 1-1)
ClassNotFoundException while loading persisted sessions: java.lang.ClassNotFoundException:
org.jboss.weld.context.conversation.ConversationIdGenerator from [Module
"org.jboss.as.web:main" from local module loader @32b0bad7 (roots:
/Users/bbrowning/src/torquebox/integration-tests/target/integ-dist/jboss/modules)]:
java.lang.ClassNotFoundException:
org.jboss.weld.context.conversation.ConversationIdGenerator from [Module
"org.jboss.as.web:main" from local module loader @32b0bad7 (roots:
/Users/bbrowning/src/torquebox/integration-tests/target/integ-dist/jboss/modules)]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:184)
[:1.0.0.Beta17]
at
org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:357)
[:1.0.0.Beta17]
at
org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:329)
[:1.0.0.Beta17]
at
org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:306)
[:1.0.0.Beta17]
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:100)
[:1.0.0.Beta17]
at java.lang.Class.forName0(Native Method) [:1.6.0_24]
at java.lang.Class.forName(Class.java:247) [:1.6.0_24]
at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:603) [:1.6.0_24]
at
org.apache.catalina.util.CustomObjectInputStream.resolveClass(CustomObjectInputStream.java:78)
[jbossweb-7.0.0.Beta11.jar:7.0.0.Beta3]
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1574) [:1.6.0_24]
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495) [:1.6.0_24]
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731) [:1.6.0_24]
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) [:1.6.0_24]
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) [:1.6.0_24]
at org.apache.catalina.session.StandardSession.readObject(StandardSession.java:1429)
[jbossweb-7.0.0.Beta11.jar:7.0.0.Beta3]
at org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:934)
[jbossweb-7.0.0.Beta11.jar:7.0.0.Beta3]
at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:395)
[jbossweb-7.0.0.Beta11.jar:7.0.0.Beta3]
at org.apache.catalina.session.StandardManager.load(StandardManager.java:322)
[jbossweb-7.0.0.Beta11.jar:7.0.0.Beta3]
at org.apache.catalina.session.StandardManager.start(StandardManager.java:633)
[jbossweb-7.0.0.Beta11.jar:7.0.0.Beta3]
at org.apache.catalina.core.ContainerBase.setManager(ContainerBase.java:459)
[jbossweb-7.0.0.Beta11.jar:7.0.0.Beta3]
at org.apache.catalina.core.StandardContext.start(StandardContext.java:3776)
[jbossweb-7.0.0.Beta11.jar:7.0.0.Beta3]
at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:61)
[jboss-as-web-7.0.0.Beta3.jar:7.0.0.Beta3]
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1675)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
[:1.6.0_24]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
[:1.6.0_24]
at java.lang.Thread.run(Thread.java:680) [:1.6.0_24]
--
This message is automatically generated by JIRA.
For more information on JIRA, see:
http://www.atlassian.com/software/jira