Mantis - Resin
Viewing Issue Advanced Details
4475 minor always 04-04-11 11:25 04-04-11 14:28
ferg  
ferg  
normal  
closed 4.0.16  
fixed  
none    
none 4.0.17  
0004475: Java deserialization classloader
(rep by Keith Fetterman)

This problem seems to be more pervasive in Resin 4.0.16 pro. I am now
seeing other application classes that the Resin EnvironmentClassLoader
is trying to load but it can't find them. I am getting the error
"java.lang.ClassNotFoundException" because the
"EnvironmentClassLoader[resin-system:]" is trying to load it. In our
resin.xml file, I have the application classes being loaded at at the
Host level.

Resin was started at 9:55 AM this morning. Since then, I have been
testing our Website including checking out, which would require
"com.marinersupply.common.store.struts.form.checkout.CheckoutCustomerInfoForm"
class to be loaded. Then at 10:37 AM, resin throws the error:

> > [11-04-04 10:37:46.336] {http://*:8082-23} [^] WARNING
> > com.caucho.server.session.SessionImpl
> > com.caucho.vfs.IOExceptionWrapper: java.lang.ClassNotFoundException:
> > com.marinersupply.common.store.struts.form.checkout.CheckoutCustomerInfoForm
> > in EnvironmentClassLoader[resin-system:]
It looks like the error is occurring when resin is either serializing or
deserializing the session. Is the EnvironmentClassLoader above the host
class loader and if so, why is trying to load application classes? Is
this a bug in resin 4.0.16?


> > [11-04-04 10:37:46.336] {http://*:8082-23} [^] WARNING
> > com.caucho.server.session.SessionImpl
> > com.caucho.vfs.IOExceptionWrapper: java.lang.ClassNotFoundException:
> > com.marinersupply.common.store.struts.form.checkout.CheckoutCustomerInfoForm
> > in EnvironmentClassLoader[resin-system:]
> > at
> > com.caucho.vfs.IOExceptionWrapper.create(IOExceptionWrapper.java:64)
> > at
> > com.caucho.server.session.SessionImpl.load(SessionImpl.java:706)
> > at
> > com.caucho.server.session.SessionImpl.load(SessionImpl.java:642)
> > at
> > com.caucho.server.session.SessionManager.createSession(SessionManager.java:1332)
> > at
> > com.caucho.server.http.AbstractCauchoRequest.createSession(AbstractCauchoRequest.java:255)
> > at
> > com.caucho.server.http.AbstractCauchoRequest.getSession(AbstractCauchoRequest.java:198)
> > at
> > com.caucho.server.http.AbstractCauchoRequest.finishRequest(AbstractCauchoRequest.java:613)
> > at
> > com.caucho.server.http.HttpServletRequestImpl.finishRequest(HttpServletRequestImpl.java:1961)
> > at
> > com.caucho.server.http.AbstractHttpRequest.finishRequest(AbstractHttpRequest.java:1725)
> > at
> > com.caucho.server.http.HttpRequest.finishRequest(HttpRequest.java:1268)
> > at
> > com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:813)
> > at
> > com.caucho.network.listen.TcpSocketLink.dispatchRequest(TcpSocketLink.java:730)
> > at
> > com.caucho.network.listen.TcpSocketLink.handleRequest(TcpSocketLink.java:689)
> > at
> > com.caucho.network.listen.TcpSocketLink.handleRequestsImpl(TcpSocketLink.java:669)
> > at
> > com.caucho.network.listen.TcpSocketLink.handleRequests(TcpSocketLink.java:617)
> > at
> > com.caucho.network.listen.AcceptTask.doTask(AcceptTask.java:104)
> > at
> > com.caucho.network.listen.ConnectionReadTask.runThread(ConnectionReadTask.java:98)
> > at
> > com.caucho.network.listen.ConnectionReadTask.run(ConnectionReadTask.java:81)
> > at
> > com.caucho.network.listen.AcceptTask.run(AcceptTask.java:67)
> > at
> > com.caucho.env.thread.ResinThread.runTasks(ResinThread.java:164)
> > at
> > com.caucho.env.thread.ResinThread.run(ResinThread.java:130)
> > Caused by:
> > java.lang.ClassNotFoundException:
> > com.marinersupply.common.store.struts.form.checkout.CheckoutCustomerInfoForm
> > in EnvironmentClassLoader[resin-system:]
> > at
> > com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1382)
> > at
> > com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1358)
> > at
> > java.lang.Class.forName0(Native Method)
> > at
> > java.lang.Class.forName(Class.java:247)
> > at
> > com.caucho.server.session.JavaSessionDeserializer$ContextObjectInputStream.resolveClass(JavaSessionDeserializer.java:105)
> > at
> > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1574)
> > at
> > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495)
> > at
> > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731)
> > at
> > java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
> > at
> > java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
> > at
> > com.caucho.server.session.JavaSessionDeserializer.readObject(JavaSessionDeserializer.java:70)
> > at
> > com.caucho.server.session.SessionImpl.load(SessionImpl.java:686)
> > ... 19 more
> >




On 03/30/2011 05:49 PM, Keith Fetterman wrote:
> > Today, I discovered when I stopped and then started resin (4.0.16), I
> > received a "java.lang.ClassNotFoundException" exception being thrown by
> > the "com.caucho.loader.DynamicClassLoader.loadClass" when I accessed the
> > home page of my Web site. The ClassNotFoundException is caused by resin
> > trying to load one of our application classes that was stored in the
> > HTTP session and was persisted. We have our application classes being
> > loaded at the host level class loader. Why is resin trying to load the
> > class via the EnvironmentClassLoader? Is this a bug in resin 4.0.16?
> >
> > We switched from using hessian to java serialization because hessian
> > serialization was trying to lazy load our hibernate objects that were in
> > the HTTP session. I don't know if this makes a difference.
> >
> > Please help if you can.
> >
> > The stack trace is below.
> >
>> >> [11-03-30 17:06:10.723] {http://*:8082-16} [^] WARNING
>> >> com.caucho.server.session.SessionImpl
>> >> com.caucho.vfs.IOExceptionWrapper: java.lang.ClassNotFoundException:
>> >> com.marinersupply.bean.CustomerBean in
>> >> EnvironmentClassLoader[resin-system:]
>> >> at
>> >> com.caucho.vfs.IOExceptionWrapper.create(IOExceptionWrapper.java:64)
>> >> at
>> >> com.caucho.server.session.SessionImpl.load(SessionImpl.java:706)
>> >> at
>> >> com.caucho.server.session.SessionImpl.load(SessionImpl.java:642)
>> >> at
>> >> com.caucho.server.session.SessionManager.createSession(SessionManager.java:1332)
>> >> at
>> >> com.caucho.server.http.AbstractCauchoRequest.createSession(AbstractCauchoRequest.java:255)
>> >> at
>> >> com.caucho.server.http.AbstractCauchoRequest.getSession(AbstractCauchoRequest.java:198)
>> >> at
>> >> com.caucho.server.http.AbstractCauchoRequest.finishRequest(AbstractCauchoRequest.java:613)
>> >> at
>> >> com.caucho.server.http.HttpServletRequestImpl.finishRequest(HttpServletRequestImpl.java:1961)
>> >> at
>> >> com.caucho.server.http.AbstractHttpRequest.finishRequest(AbstractHttpRequest.java:1725)
>> >> at
>> >> com.caucho.server.http.HttpRequest.finishRequest(HttpRequest.java:1268)
>> >> at
>> >> com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:813)
>> >> at
>> >> com.caucho.network.listen.TcpSocketLink.dispatchRequest(TcpSocketLink.java:730)
>> >> at
>> >> com.caucho.network.listen.TcpSocketLink.handleRequest(TcpSocketLink.java:689)
>> >> at
>> >> com.caucho.network.listen.TcpSocketLink.handleRequestsImpl(TcpSocketLink.java:669)
>> >> at
>> >> com.caucho.network.listen.TcpSocketLink.handleRequests(TcpSocketLink.java:617)
>> >> at
>> >> com.caucho.network.listen.AcceptTask.doTask(AcceptTask.java:104)
>> >> at
>> >> com.caucho.network.listen.ConnectionReadTask.runThread(ConnectionReadTask.java:98)
>> >> at
>> >> com.caucho.network.listen.ConnectionReadTask.run(ConnectionReadTask.java:81)
>> >> at
>> >> com.caucho.network.listen.AcceptTask.run(AcceptTask.java:67)
>> >> at
>> >> com.caucho.env.thread.ResinThread.runTasks(ResinThread.java:164)
>> >> at
>> >> com.caucho.env.thread.ResinThread.run(ResinThread.java:130)
>> >> Caused by:
>> >> java.lang.ClassNotFoundException: com.marinersupply.bean.CustomerBean
>> >> in EnvironmentClassLoader[resin-system:]
>> >> at
>> >> com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1382)
>> >> at
>> >> com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1358)
>> >> at
>> >> java.lang.Class.forName0(Native Method)
>> >> at
>> >> java.lang.Class.forName(Class.java:247)
>> >> at
>> >> com.caucho.server.session.JavaSessionDeserializer$ContextObjectInputStream.resolveClass(JavaSessionDeserializer.java:105)
>> >> at
>> >> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1574)
>> >> at
>> >> java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495)
>> >> at
>> >> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731)
>> >> at
>> >> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
>> >> at
>> >> java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
>> >> at
>> >> com.caucho.server.session.JavaSessionDeserializer.readObject(JavaSessionDeserializer.java:70)
>> >> at
>> >> com.caucho.server.session.SessionImpl.load(SessionImpl.java:686)
>> >> ... 19 more
>> >>
>> >> [11-03-30 17:06:10.741] {http://*:8082-15} [^] WARNING
>> >> com.caucho.server.session.SessionImpl
>> >> com.caucho.vfs.IOExceptionWrapper: java.lang.ClassNotFoundException:
>> >> com.marinersupply.bean.CustomerBean in
>> >> EnvironmentClassLoader[resin-system:]
>> >> at
>> >> com.caucho.vfs.IOExceptionWrapper.create(IOExceptionWrapper.java:64)
>> >> at
>> >> com.caucho.server.session.SessionImpl.load(SessionImpl.java:706)
>> >> at
>> >> com.caucho.server.session.SessionImpl.load(SessionImpl.java:642)
>> >> at
>> >> com.caucho.server.session.SessionManager.createSession(SessionManager.java:1332)
>> >> at
>> >> com.caucho.server.http.AbstractCauchoRequest.createSession(AbstractCauchoRequest.java:255)
>> >> at
>> >> com.caucho.server.http.AbstractCauchoRequest.getSession(AbstractCauchoRequest.java:198)
>> >> at
>> >> com.caucho.server.http.AbstractCauchoRequest.finishRequest(AbstractCauchoRequest.java:613)
>> >> at
>> >> com.caucho.server.http.HttpServletRequestImpl.finishRequest(HttpServletRequestImpl.java:1961)
>> >> at
>> >> com.caucho.server.http.AbstractHttpRequest.finishRequest(AbstractHttpRequest.java:1725)
>> >> at
>> >> com.caucho.server.http.HttpRequest.finishRequest(HttpRequest.java:1268)
>> >> at
>> >> com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:813)
>> >> at
>> >> com.caucho.network.listen.TcpSocketLink.dispatchRequest(TcpSocketLink.java:730)
>> >> at
>> >> com.caucho.network.listen.TcpSocketLink.handleRequest(TcpSocketLink.java:689)
>> >> at
>> >> com.caucho.network.listen.TcpSocketLink.handleRequestsImpl(TcpSocketLink.java:669)
>> >> at
>> >> com.caucho.network.listen.TcpSocketLink.handleRequests(TcpSocketLink.java:617)
>> >> at
>> >> com.caucho.network.listen.KeepaliveRequestTask.doTask(KeepaliveRequestTask.java:73)
>> >> at
>> >> com.caucho.network.listen.ConnectionReadTask.runThread(ConnectionReadTask.java:98)
>> >> at
>> >> com.caucho.network.listen.ConnectionReadTask.run(ConnectionReadTask.java:81)
>> >> at
>> >> com.caucho.network.listen.KeepaliveRequestTask.run(KeepaliveRequestTask.java:60)
>> >> at
>> >> com.caucho.env.thread.ResinThread.runTasks(ResinThread.java:164)
>> >> at
>> >> com.caucho.env.thread.ResinThread.run(ResinThread.java:130)
>> >> Caused by:
>> >> java.lang.ClassNotFoundException: com.marinersupply.bean.CustomerBean
>> >> in EnvironmentClassLoader[resin-system:]
>> >> at
>> >> com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1382)
>> >> at
>> >> com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1358)
>> >> at
>> >> java.lang.Class.forName0(Native Method)
>> >> at
>> >> java.lang.Class.forName(Class.java:247)
>> >> at
>> >> com.caucho.server.session.JavaSessionDeserializer$ContextObjectInputStream.resolveClass(JavaSessionDeserializer.java:105)
>> >> at
>> >> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1574)
>> >> at
>> >> java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495)
>> >> at
>> >> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731)
>> >> at
>> >> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
>> >> at
>> >> java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
>> >> at
>> >> com.caucho.server.session.JavaSessionDeserializer.readObject(JavaSessionDeserializer.java:70)
>> >> at
>> >> com.caucho.server.session.SessionImpl.load(SessionImpl.java:686)
>> >> ... 19 more
>> >>

Notes
(0005147)
ferg   
04-04-11 14:28   
server/0b22