You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ha...@apache.org on 2002/02/03 00:39:41 UTC
cvs commit: jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/server/impl/adapters MarshalledInovcationHandlerAdapter.java
hammant 02/02/02 15:39:41
Modified: altrmi/src/java/org/apache/commons/altrmi/client/impl/direct
DirectMarshalledHostContext.java
DirectMarshalledInvocationHandler.java
altrmi/src/java/org/apache/commons/altrmi/common
SerializationHelper.java
altrmi/src/java/org/apache/commons/altrmi/server/impl/adapters
MarshalledInovcationHandlerAdapter.java
Added: altrmi/src/java/org/apache/commons/altrmi/common
ClassLoaderObjectInputStream.java
Log:
Small mods for class visibility issues while deserializing.
Revision Changes Path
1.2 +6 -1 jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/client/impl/direct/DirectMarshalledHostContext.java
Index: DirectMarshalledHostContext.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/client/impl/direct/DirectMarshalledHostContext.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DirectMarshalledHostContext.java 26 Jan 2002 15:22:16 -0000 1.1
+++ DirectMarshalledHostContext.java 2 Feb 2002 23:39:41 -0000 1.2
@@ -19,7 +19,7 @@
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
public class DirectMarshalledHostContext extends AbstractHostContext {
@@ -34,7 +34,12 @@
*/
public DirectMarshalledHostContext(AltrmiMarshalledInvocationHandler altrmiInvocationHandler)
throws AltrmiConnectionException {
- super(new DirectMarshalledInvocationHandler(altrmiInvocationHandler));
+ this(altrmiInvocationHandler, DirectMarshalledHostContext.class.getClassLoader());
+ }
+
+ public DirectMarshalledHostContext(AltrmiMarshalledInvocationHandler altrmiInvocationHandler, ClassLoader classLoader)
+ throws AltrmiConnectionException {
+ super(new DirectMarshalledInvocationHandler(altrmiInvocationHandler, classLoader));
}
1.3 +10 -2 jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/client/impl/direct/DirectMarshalledInvocationHandler.java
Index: DirectMarshalledInvocationHandler.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/client/impl/direct/DirectMarshalledInvocationHandler.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DirectMarshalledInvocationHandler.java 27 Jan 2002 15:47:40 -0000 1.2
+++ DirectMarshalledInvocationHandler.java 2 Feb 2002 23:39:41 -0000 1.3
@@ -36,11 +36,12 @@
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
*/
public final class DirectMarshalledInvocationHandler extends AbstractDirectInvocationHandler {
private AltrmiMarshalledInvocationHandler mAltrmiInvocationHandler;
+ private ClassLoader mClassLoader;
/**
@@ -55,6 +56,13 @@
public DirectMarshalledInvocationHandler(AltrmiMarshalledInvocationHandler altrmiInvocationHandler)
throws AltrmiConnectionException {
mAltrmiInvocationHandler = altrmiInvocationHandler;
+ mClassLoader = this.getClass().getClassLoader();
+ }
+
+ public DirectMarshalledInvocationHandler(AltrmiMarshalledInvocationHandler altrmiInvocationHandler, ClassLoader classLoader)
+ throws AltrmiConnectionException {
+ mAltrmiInvocationHandler = altrmiInvocationHandler;
+ mClassLoader = classLoader;
}
protected AltrmiReply performInvocation(AltrmiRequest request) throws IOException {
@@ -62,7 +70,7 @@
try {
byte[] serRequest = SerializationHelper.getBytesFromInstance(request);
byte[] serReply = mAltrmiInvocationHandler.handleInvocation(serRequest);
- return (AltrmiReply) SerializationHelper.getInstanceFromBytes(serReply);
+ return (AltrmiReply) SerializationHelper.getInstanceFromBytes(serReply, mClassLoader);
} catch (IOException e) {
e.printStackTrace();
return new RequestFailedReply("Some IO Exception on server side : " + e.getMessage());
1.2 +5 -1 jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/common/SerializationHelper.java
Index: SerializationHelper.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/common/SerializationHelper.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SerializationHelper.java 26 Jan 2002 15:22:17 -0000 1.1
+++ SerializationHelper.java 2 Feb 2002 23:39:41 -0000 1.2
@@ -36,9 +36,13 @@
}
public static Object getInstanceFromBytes(byte[] byteArray) throws IOException, ClassNotFoundException {
+ return getInstanceFromBytes(byteArray, SerializationHelper.class.getClassLoader());
+ }
+ public static Object getInstanceFromBytes(byte[] byteArray, ClassLoader classLoader) throws IOException, ClassNotFoundException {
ByteArrayInputStream bAIS = new ByteArrayInputStream(byteArray);
- ObjectInputStream oIs = new ObjectInputStream(bAIS);
+ ObjectInputStream oIs = //new ObjectInputStream(bAIS);
+ new ClassLoaderObjectInputStream(classLoader, bAIS);
Object obj = oIs.readObject();
oIs.close();
return obj;
1.1 jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/common/ClassLoaderObjectInputStream.java
Index: ClassLoaderObjectInputStream.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
package org.apache.commons.altrmi.common;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.ObjectStreamClass;
import java.io.OutputStream;
import java.io.StreamCorruptedException;
/**
* A special ObjectInputStream to handle highly transient classes hosted
* by Avalon components that are juggling many classloaders.
*
* @author <a href="mailto:paul_hammant@yahoo.com">Paul Hammant</a>
*/
public class ClassLoaderObjectInputStream
extends ObjectInputStream
{
private ClassLoader m_classLoader;
public ClassLoaderObjectInputStream( final ClassLoader classLoader,
final InputStream inputStream )
throws IOException, StreamCorruptedException
{
super( inputStream );
m_classLoader = classLoader;
}
protected Class resolveClass( final ObjectStreamClass objectStreamClass )
throws IOException, ClassNotFoundException
{
final Class clazz =
Class.forName( objectStreamClass.getName(), false, m_classLoader );
if( null != clazz )
{
return clazz; // the classloader knows of the class
}
else
{
// classloader knows not of class, let the super classloader do it
return super.resolveClass( objectStreamClass );
}
}
}
1.2 +9 -1 jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/server/impl/adapters/MarshalledInovcationHandlerAdapter.java
Index: MarshalledInovcationHandlerAdapter.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/server/impl/adapters/MarshalledInovcationHandlerAdapter.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- MarshalledInovcationHandlerAdapter.java 28 Jan 2002 14:04:54 -0000 1.1
+++ MarshalledInovcationHandlerAdapter.java 2 Feb 2002 23:39:41 -0000 1.2
@@ -24,11 +24,12 @@
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
public class MarshalledInovcationHandlerAdapter implements AltrmiMarshalledInvocationHandler {
private AltrmiInvocationHandler mAltrmiInvocationHandler;
+ private ClassLoader mClassLoader;
/**
* Constructor MarshalledInovcationHandlerAdapter
@@ -39,8 +40,15 @@
*/
public MarshalledInovcationHandlerAdapter(AltrmiInvocationHandler altrmiInvocationHandler) {
mAltrmiInvocationHandler = altrmiInvocationHandler;
+ mClassLoader = getClass().getClassLoader();
}
+ public MarshalledInovcationHandlerAdapter(AltrmiInvocationHandler altrmiInvocationHandler, ClassLoader classLoader) {
+ mAltrmiInvocationHandler = altrmiInvocationHandler;
+ mClassLoader = classLoader;
+ }
+
+
/**
* Method handleInvocation
*
@@ -52,7 +60,7 @@
*/
public byte[] handleInvocation(byte[] request) {
try {
- AltrmiRequest ar = (AltrmiRequest) SerializationHelper.getInstanceFromBytes(request);
+ AltrmiRequest ar = (AltrmiRequest) SerializationHelper.getInstanceFromBytes(request, mClassLoader);
AltrmiReply reply = mAltrmiInvocationHandler.handleInvocation(ar);
return SerializationHelper.getBytesFromInstance(reply);
} catch (IOException e) {
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>