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

Reply via email to