User: starksm 
  Date: 01/06/15 11:33:46

  Modified:    src/main/org/jboss/ejb/plugins SessionObjectInputStream.java
  Log:
  Implement the patch for Bug #432610 by overriding resolveProxyClass to
  use the application class loader.
  
  Revision  Changes    Path
  1.4       +28 -4     
jboss/src/main/org/jboss/ejb/plugins/SessionObjectInputStream.java
  
  Index: SessionObjectInputStream.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/SessionObjectInputStream.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SessionObjectInputStream.java     2000/12/07 15:44:24     1.3
  +++ SessionObjectInputStream.java     2001/06/15 18:33:46     1.4
  @@ -18,6 +18,7 @@
   import java.lang.reflect.Method;
   import java.lang.reflect.Field;
   import java.lang.reflect.InvocationTargetException;
  +import java.lang.reflect.Proxy;
   import java.rmi.RemoteException;
   import java.rmi.ServerException;
   import java.util.Collection;
  @@ -47,7 +48,8 @@
    *   @see org.jboss.ejb.plugins.SessionObjectOutputStream
    *   @author Rickard �berg ([EMAIL PROTECTED])
    *   @author <a href="mailto:[EMAIL PROTECTED]";>Sebastien Alborini</a>
  - *   @version $Revision: 1.3 $
  + *   @author [EMAIL PROTECTED]
  + *   @version $Revision: 1.4 $
    */
   class SessionObjectInputStream
        extends ObjectInputStream
  @@ -98,8 +100,12 @@
         return obj;
      }
      
  -   protected Class resolveClass(ObjectStreamClass v) throws IOException, 
ClassNotFoundException {
  -      try {
  +   /** Override the ObjectInputStream implementation to use the application class 
loader
  +    */
  +   protected Class resolveClass(ObjectStreamClass v) throws IOException, 
ClassNotFoundException
  +   {
  +      try
  +      {
            // use the application classloader to resolve the class
            return appCl.loadClass(v.getName());
            
  @@ -108,5 +114,23 @@
            return super.resolveClass(v);
         }
      }
  -      
  +
  +   /** Override the ObjectInputStream implementation to use the application class 
loader
  +    */
  +   protected Class resolveProxyClass(String[] interfaces) throws IOException, 
ClassNotFoundException
  +   {
  +       Class clazz = null;
  +       Class[] ifaceClasses = new Class[interfaces.length];
  +       for(int i = 0; i < interfaces.length; i ++)
  +           ifaceClasses[i] = Class.forName(interfaces[i], false, appCl);
  +       try
  +       {
  +           clazz = Proxy.getProxyClass(appCl, ifaceClasses);
  +       }
  +       catch(IllegalArgumentException e)
  +       {
  +           throw new ClassNotFoundException("Failed to resolve proxy class", e);
  +       }
  +       return clazz;
  +   }
   }
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to