User: starksm
Date: 01/09/08 23:44:26
Modified: src/main/org/jboss/mq Tag: Branch_2_4 SpyObjectMessage.java
Log:
Merge change from main concerning ObjectMessage class loading issue
Revision Changes Path
No revision
No revision
1.4.2.2 +20 -2 jbossmq/src/main/org/jboss/mq/SpyObjectMessage.java
Index: SpyObjectMessage.java
===================================================================
RCS file: /cvsroot/jboss/jbossmq/src/main/org/jboss/mq/SpyObjectMessage.java,v
retrieving revision 1.4.2.1
retrieving revision 1.4.2.2
diff -u -r1.4.2.1 -r1.4.2.2
--- SpyObjectMessage.java 2001/08/23 03:57:08 1.4.2.1
+++ SpyObjectMessage.java 2001/09/09 06:44:26 1.4.2.2
@@ -17,7 +17,7 @@
*
* @author Norbert Lataille ([EMAIL PROTECTED])
* @created August 16, 2001
- * @version $Revision: 1.4.2.1 $
+ * @version $Revision: 1.4.2.2 $
*/
public class SpyObjectMessage
extends SpyMessage
@@ -65,7 +65,25 @@
retVal = new byte[objectBytes.length];
System.arraycopy( objectBytes, 0, retVal, 0, objectBytes.length );
} else {
- ObjectInputStream input = new ObjectInputStream( new
ByteArrayInputStream( objectBytes ) );
+
+ /**
+ * Default implementation ObjectInputStream does not work
well
+ * when running an a micro kernal style app-server like
JBoss.
+ * We need to look for the Class in the context class loader
+ * and not in the System classloader.
+ *
+ * Would this be done better by using a MarshaedObject??
+ */
+ class ObjectInputStreamExt extends ObjectInputStream {
+ ObjectInputStreamExt(InputStream is) throws
IOException {
+ super(is);
+ }
+ protected Class resolveClass(ObjectStreamClass v)
throws IOException, ClassNotFoundException {
+ return
Thread.currentThread().getContextClassLoader().loadClass(v.getName());
+ }
+ }
+
+ ObjectInputStream input= new ObjectInputStreamExt(new
ByteArrayInputStream(objectBytes));
retVal = ( Serializable )input.readObject();
input.close();
}
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development