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