Mantis Bugtracker
  

Viewing Issue Simple Details Jump to Notes ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0000306 [Resin] minor always 07-12-05 00:00 11-30-05 14:43
Reporter ferg View Status public  
Assigned To
Priority urgent Resolution fixed  
Status closed   Product Version 3.0.14
Summary 0000306: JMS deserialization classloader issues
Description RSN-345
(rep by Gunther Wieser)

we are encountering a problem with resin 3.0.12 and 3.0.14 (we haven't tested any other version).
we use the JMS implementation that comes with resin, and this has been working for the last weeks perfectly.
now we changed the definition of a message, and with these changes we introduced a new property of the bean called "Pharmacy". the class "Pharmacy" again holds several properties, all of course either marked transient or inplementing serializable.

at the point where we encounter the problem, the "Pharmacy" object had already been serialized for several times, so we can be pretty sure that serialization itself works perfectly with this class. the serialization happened in a workflow enige we use, just to make clear that these steps BEFORE the problem have nothing to do with using JMS.

but when we send the message, we get the following error:

java.lang.ClassNotFoundException: de.storm.uniteddesign.model.pharmacy.Address
        at java.net.URLClassLoader$1.run(URLClassLoader.java:199)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:219)
        at java.io.ObjectInputStream.resolveProxyClass(ObjectInputStream.java:630)
        at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1469)
        at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1432)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1626)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1845)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1769)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1646)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1845)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1769)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1646)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1845)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1769)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1646)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1845)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1769)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1646)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
        at com.caucho.jms.message.ObjectMessageImpl.getObject(ObjectMessageImpl.java:85)
        at com.caucho.jms.jdbc.JdbcMessage.writeObject(JdbcMessage.java:629)
        at com.caucho.jms.jdbc.JdbcMessage.send(JdbcMessage.java:230)
        at com.caucho.jms.jdbc.JdbcQueue.send(JdbcQueue.java:161)
        at com.caucho.jms.session.SessionImpl.send(SessionImpl.java:752)
        at com.caucho.jms.session.MessageProducerImpl.send(MessageProducerImpl.java:161)
Additional Information
Attached Files

- Relationships

- Notes
(0000345)
ferg
07-12-05 00:00

It looks like the serialized object uses Proxy classes which require a separate overload in ContextLoaderObjectInputStream.
 

- Issue History
Date Modified Username Field Change
07-12-05 00:00 ferg New Issue
11-30-05 00:00 administrator Fixed in Version  => 3.0.15
11-30-05 14:43 ferg Status resolved => closed


Mantis 1.0.0rc3[^]
Copyright © 2000 - 2005 Mantis Group
28 total queries executed.
26 unique queries executed.
Powered by Mantis Bugtracker