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/01/26 16:22:17 UTC
cvs commit: jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/test DirectMarshalledTest.java
hammant 02/01/26 07:22:17
Modified: altrmi PROPOSAL tests.xml
altrmi/src/java/org/apache/commons/altrmi/client/impl/direct
DirectHostContext.java DirectInvocationHandler.java
altrmi/src/java/org/apache/commons/altrmi/client/impl/stream
ClientCustomStreamReadWriter.java
altrmi/src/java/org/apache/commons/altrmi/server/impl
ServerCustomStreamReadWriter.java
Added: altrmi/src/java/org/apache/commons/altrmi/client/impl/direct
AbstractDirectInvocationHandler.java
DirectMarshalledHostContext.java
DirectMarshalledInvocationHandler.java
altrmi/src/java/org/apache/commons/altrmi/common
AltrmiMarshalledInvocationHandler.java
SerializationHelper.java
altrmi/src/java/org/apache/commons/altrmi/server/impl/direct
DirectMarshalledInovcationAdapter.java
DirectMarshalledServer.java
altrmi/src/java/org/apache/commons/altrmi/test
DirectMarshalledTest.java
Log:
new direct-marshalled transport type
Revision Changes Path
1.12 +10 -7 jakarta-commons-sandbox/altrmi/PROPOSAL
Index: PROPOSAL
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/altrmi/PROPOSAL,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- PROPOSAL 25 Jan 2002 16:40:13 -0000 1.11
+++ PROPOSAL 26 Jan 2002 15:22:16 -0000 1.12
@@ -59,13 +59,16 @@
interfaces etc..
e) ObjectStream over Pipe #2 12095 4.48
- f) ObjectStream over Pipe #1 61166 22.64
- g) Direct #3 2391498 885.08
+ f) Direct Marshalled #3 20759 7.68
+ g) ObjectStream over Pipe #1 61166 22.64
+ h) Direct Unmarshalled # 2391498 885.08
#1 Without calling reset() as workaround to the ObjectStream bug
#2 With calling reset() as workaround to the ObjectStream bug
- #3 Marshalled but not streamed. Still as good as DynamicProxy
- for separation.
+ #3 Completely separates classloaders of client and server. Requires
+ a thread for each though.
+ #4 Good as DynamicProxy for separation. Does not separate classloaders
+ of client and server.
Non AltRMI types
----------------
@@ -74,10 +77,10 @@
branches of classloader for these three. The same interfaces
etc must be visible to both impl and proxy.
- h) DyanmicProxy #4
+ i) DyanmicProxy #5
(copied from Excalibur) 20282070 7506.32
- i) Hand-coded proxy #4 41214422 15253.30
- j) No Proxy #4 42384804 15686.46
+ j) Hand-coded proxy #5 41214422 15253.30
+ k) No Proxy #5 42384804 15686.46
#4 - For all of these three, the actual timing may slow down the test.
1.4 +8 -1 jakarta-commons-sandbox/altrmi/tests.xml
Index: tests.xml
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/altrmi/tests.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- tests.xml 26 Jan 2002 13:51:34 -0000 1.3
+++ tests.xml 26 Jan 2002 15:22:16 -0000 1.4
@@ -3,7 +3,7 @@
<!--
"Alt (to) RMI" component of the Jakarta Commons Subproject
- $Id: tests.xml,v 1.3 2002/01/26 13:51:34 hammant Exp $
+ $Id: tests.xml,v 1.4 2002/01/26 15:22:16 hammant Exp $
-->
@@ -170,6 +170,13 @@
<target name="directa" depends="generate" description="Direct Server and Client (client side classes)">
<java classname="org.apache.commons.altrmi.test.DirectTest" fork="true">
+ <classpath refid="testA.classpath"/>
+ <arg value="C"/>
+ </java>
+ </target>
+
+ <target name="directmarshalled" depends="generate" description="Direct Marshalled Server and Client (client side classes)">
+ <java classname="org.apache.commons.altrmi.test.DirectMarshalledTest" fork="true">
<classpath refid="testA.classpath"/>
<arg value="C"/>
</java>
1.2 +0 -1 jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/client/impl/direct/DirectHostContext.java
Index: DirectHostContext.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/client/impl/direct/DirectHostContext.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DirectHostContext.java 21 Jan 2002 15:38:20 -0000 1.1
+++ DirectHostContext.java 26 Jan 2002 15:22:16 -0000 1.2
@@ -10,7 +10,6 @@
import org.apache.commons.altrmi.client.impl.AbstractHostContext;
-import org.apache.commons.altrmi.client.AltrmiConnectionListener;
import org.apache.commons.altrmi.common.AltrmiInvocationHandler;
import org.apache.commons.altrmi.common.AltrmiConnectionException;
@@ -20,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 DirectHostContext extends AbstractHostContext {
1.6 +4 -96 jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/client/impl/direct/DirectInvocationHandler.java
Index: DirectInvocationHandler.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/client/impl/direct/DirectInvocationHandler.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- DirectInvocationHandler.java 21 Jan 2002 15:38:20 -0000 1.5
+++ DirectInvocationHandler.java 26 Jan 2002 15:22:16 -0000 1.6
@@ -33,14 +33,11 @@
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
- * @version $Revision: 1.5 $
+ * @version $Revision: 1.6 $
*/
-public final class DirectInvocationHandler extends AbstractClientInvocationHandler {
+public final class DirectInvocationHandler extends AbstractDirectInvocationHandler {
private AltrmiInvocationHandler mAltrmiInvocationHandler;
- private boolean mMethodLogging = false;
- private long mLastRealRequest = System.currentTimeMillis();
-
/**
* Constructor DirectInvocationHandler
@@ -56,96 +53,7 @@
mAltrmiInvocationHandler = altrmiInvocationHandler;
}
- /**
- * Method setAltrmiConnectionListener
- *
- *
- * @param altrmiConnectionListener
- *
- */
- public void setAltrmiConnectionListener(AltrmiConnectionListener altrmiConnectionListener) {
-
- super.setAltrmiConnectionListener(altrmiConnectionListener);
-
- mMethodLogging = altrmiConnectionListener.methodLogging();
+ protected AltrmiReply performInvocation(AltrmiRequest request) throws IOException{
+ return mAltrmiInvocationHandler.handleInvocation(request);
}
-
-
- /**
- * Method handleInvocation
- *
- *
- * @param request
- *
- * @return
- *
- */
- public AltrmiReply handleInvocation(AltrmiRequest request) {
-
- if (request.getRequestCode() != AltrmiRequest.PINGREQUEST) {
- mLastRealRequest = System.currentTimeMillis();
- }
-
- boolean again = true;
- AltrmiReply reply = null;
- int tries = 0;
- long start = 0;
-
- if (mMethodLogging) {
- start = System.currentTimeMillis();
- }
-
- while (again) {
- tries++;
-
- again = false;
- reply = mAltrmiInvocationHandler.handleInvocation(request);
-
- //if ((reply instanceof ProblemReply)) { // slower by 11%
- if (reply.getReplyCode() >= 100) {
- if (reply instanceof TryLaterReply) {
- int millis = ((TryLaterReply) reply).getSuggestedDelayMillis();
-
- mAltrmiConnectionListener.serviceSuspended(request, tries, millis);
-
- again = true;
- } else if (reply instanceof NoSuchReferenceReply) {
- throw new NotSuchReferenceException();
- } else if (reply instanceof NotPublishedReply) {
- PublishedNameRequest pnr = (PublishedNameRequest) request;
-
- throw new NotPublishedException(pnr.getPublishedServiceName(),
- pnr.getObjectName());
- }
- }
- }
-
- if (mMethodLogging) {
- if (request instanceof MethodRequest) {
- mAltrmiConnectionListener.methodCalled(
- ((MethodRequest) request).getMethodSignature(),
- System.currentTimeMillis() - start);
- }
- }
-
- return reply;
- }
-
- protected boolean tryReconnect() {
-
- // blimey how do we reconnect this?
- throw new AltrmiInvocationException("Direct connection broken, unable to reconnect.");
- }
-
- /**
- * Method getLastRealRequest
- *
- *
- * @return
- *
- */
- public long getLastRealRequest() {
- return mLastRealRequest;
- }
-
}
1.1 jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/client/impl/direct/AbstractDirectInvocationHandler.java
Index: AbstractDirectInvocationHandler.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.client.impl.direct;
import org.apache.commons.altrmi.common.AltrmiInvocationHandler;
import org.apache.commons.altrmi.common.AltrmiConnectionException;
import org.apache.commons.altrmi.common.AltrmiReply;
import org.apache.commons.altrmi.common.AltrmiRequest;
import org.apache.commons.altrmi.common.TryLaterReply;
import org.apache.commons.altrmi.common.NotPublishedReply;
import org.apache.commons.altrmi.common.NotPublishedException;
import org.apache.commons.altrmi.common.PublishedNameRequest;
import org.apache.commons.altrmi.common.AltrmiInvocationException;
import org.apache.commons.altrmi.common.MethodRequest;
import org.apache.commons.altrmi.common.NoSuchReferenceReply;
import org.apache.commons.altrmi.common.NotSuchReferenceException;
import org.apache.commons.altrmi.client.impl.AbstractClientInvocationHandler;
import org.apache.commons.altrmi.client.AltrmiConnectionListener;
import java.io.IOException;
/**
* Class DirectInvocationHandler
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
* @version $Revision: 1.1 $
*/
public abstract class AbstractDirectInvocationHandler extends AbstractClientInvocationHandler {
protected boolean mMethodLogging = false;
protected long mLastRealRequest = System.currentTimeMillis();
/**
* Method setAltrmiConnectionListener
*
*
* @param altrmiConnectionListener
*
*/
public void setAltrmiConnectionListener(AltrmiConnectionListener altrmiConnectionListener) {
super.setAltrmiConnectionListener(altrmiConnectionListener);
mMethodLogging = altrmiConnectionListener.methodLogging();
}
/**
* Method handleInvocation
*
*
* @param request
*
* @return
*
*/
public AltrmiReply handleInvocation(AltrmiRequest request) {
if (request.getRequestCode() != AltrmiRequest.PINGREQUEST) {
mLastRealRequest = System.currentTimeMillis();
}
boolean again = true;
AltrmiReply reply = null;
int tries = 0;
long start = 0;
if (mMethodLogging) {
start = System.currentTimeMillis();
}
while (again) {
tries++;
again = false;
try {
reply = performInvocation(request);
} catch (IOException ioe) {
ioe.printStackTrace();
}
//if ((reply instanceof ProblemReply)) { // slower by 11%
if (reply.getReplyCode() >= 100) {
if (reply instanceof TryLaterReply) {
int millis = ((TryLaterReply) reply).getSuggestedDelayMillis();
mAltrmiConnectionListener.serviceSuspended(request, tries, millis);
again = true;
} else if (reply instanceof NoSuchReferenceReply) {
throw new NotSuchReferenceException();
} else if (reply instanceof NotPublishedReply) {
PublishedNameRequest pnr = (PublishedNameRequest) request;
throw new NotPublishedException(pnr.getPublishedServiceName(),
pnr.getObjectName());
}
}
}
if (mMethodLogging) {
if (request instanceof MethodRequest) {
mAltrmiConnectionListener.methodCalled(
((MethodRequest) request).getMethodSignature(),
System.currentTimeMillis() - start);
}
}
return reply;
}
protected boolean tryReconnect() {
// blimey how do we reconnect this?
throw new AltrmiInvocationException("Direct connection broken, unable to reconnect.");
}
/**
* Method getLastRealRequest
*
*
* @return
*
*/
public long getLastRealRequest() {
return mLastRealRequest;
}
protected abstract AltrmiReply performInvocation(AltrmiRequest request) throws IOException;
}
1.1 jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/client/impl/direct/DirectMarshalledHostContext.java
Index: DirectMarshalledHostContext.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.client.impl.direct;
import org.apache.commons.altrmi.client.impl.AbstractHostContext;
import org.apache.commons.altrmi.common.AltrmiConnectionException;
import org.apache.commons.altrmi.common.AltrmiMarshalledInvocationHandler;
/**
* Class DirectHostContext
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
* @version $Revision: 1.1 $
*/
public class DirectMarshalledHostContext extends AbstractHostContext {
/**
* Constructor DirectHostContext
*
*
* @param altrmiInvocationHandler
*
* @throws AltrmiConnectionException
*
*/
public DirectMarshalledHostContext(AltrmiMarshalledInvocationHandler altrmiInvocationHandler)
throws AltrmiConnectionException {
super(new DirectMarshalledInvocationHandler(altrmiInvocationHandler));
}
}
1.1 jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/client/impl/direct/DirectMarshalledInvocationHandler.java
Index: DirectMarshalledInvocationHandler.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.client.impl.direct;
import org.apache.commons.altrmi.common.AltrmiInvocationHandler;
import org.apache.commons.altrmi.common.AltrmiConnectionException;
import org.apache.commons.altrmi.common.AltrmiReply;
import org.apache.commons.altrmi.common.AltrmiRequest;
import org.apache.commons.altrmi.common.TryLaterReply;
import org.apache.commons.altrmi.common.NotPublishedReply;
import org.apache.commons.altrmi.common.NotPublishedException;
import org.apache.commons.altrmi.common.PublishedNameRequest;
import org.apache.commons.altrmi.common.AltrmiInvocationException;
import org.apache.commons.altrmi.common.MethodRequest;
import org.apache.commons.altrmi.common.NoSuchReferenceReply;
import org.apache.commons.altrmi.common.NotSuchReferenceException;
import org.apache.commons.altrmi.common.AltrmiMarshalledInvocationHandler;
import org.apache.commons.altrmi.common.SerializationHelper;
import org.apache.commons.altrmi.client.impl.AbstractClientInvocationHandler;
import org.apache.commons.altrmi.client.AltrmiConnectionListener;
import java.io.IOException;
/**
* Class DirectInvocationHandler
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
* @version $Revision: 1.1 $
*/
public final class DirectMarshalledInvocationHandler extends AbstractDirectInvocationHandler {
private AltrmiMarshalledInvocationHandler mAltrmiInvocationHandler;
/**
* Constructor DirectInvocationHandler
*
*
* @param altrmiInvocationHandler
*
* @throws AltrmiConnectionException
*
*/
public DirectMarshalledInvocationHandler(AltrmiMarshalledInvocationHandler altrmiInvocationHandler)
throws AltrmiConnectionException {
mAltrmiInvocationHandler = altrmiInvocationHandler;
}
protected AltrmiReply performInvocation(AltrmiRequest request) throws IOException {
byte[] serRequest = SerializationHelper.getBytesFromInstance(request);
byte[] serReply = mAltrmiInvocationHandler.handleInvocation(serRequest);
return (AltrmiReply) SerializationHelper.getInstanceFromBytes(serReply);
}
}
1.2 +7 -25 jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/client/impl/stream/ClientCustomStreamReadWriter.java
Index: ClientCustomStreamReadWriter.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/client/impl/stream/ClientCustomStreamReadWriter.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ClientCustomStreamReadWriter.java 20 Jan 2002 00:13:40 -0000 1.1
+++ ClientCustomStreamReadWriter.java 26 Jan 2002 15:22:16 -0000 1.2
@@ -8,19 +8,14 @@
*/
package org.apache.commons.altrmi.client.impl.stream;
-
-
-import org.apache.commons.altrmi.common.AltrmiRequest;
import org.apache.commons.altrmi.common.AltrmiReply;
+import org.apache.commons.altrmi.common.AltrmiRequest;
+import org.apache.commons.altrmi.common.SerializationHelper;
-import java.io.ObjectOutputStream;
-import java.io.ObjectInputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
import java.io.IOException;
import java.io.BufferedOutputStream;
@@ -30,7 +25,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 ClientCustomStreamReadWriter extends ClientStreamReadWriter {
@@ -63,18 +58,8 @@
private void writeRequest(AltrmiRequest altrmiRequest) throws IOException {
- ByteArrayOutputStream bAOS = new ByteArrayOutputStream();
- ObjectOutputStream objectOutputStream;
-
- objectOutputStream = new ObjectOutputStream(bAOS);
+ byte[] aBytes = SerializationHelper.getBytesFromInstance(altrmiRequest);
- objectOutputStream.writeObject(altrmiRequest);
- objectOutputStream.flush();
-
- byte[] aBytes = bAOS.toByteArray();
-
- objectOutputStream.close();
- bAOS.close();
mDataOutputStream.writeInt(aBytes.length);
mDataOutputStream.write(aBytes);
mDataOutputStream.flush();
@@ -87,9 +72,6 @@
mDataInputStream.read(byteArray);
- ByteArrayInputStream bAIS = new ByteArrayInputStream(byteArray);
- ObjectInputStream oOs = new ObjectInputStream(bAIS);
-
- return (AltrmiReply) oOs.readObject();
+ return (AltrmiReply) SerializationHelper.getInstanceFromBytes(byteArray);
}
}
1.1 jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/common/AltrmiMarshalledInvocationHandler.java
Index: AltrmiMarshalledInvocationHandler.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;
/**
* Interface AltrmiMarshalledInvocationHandler
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
* @version * $Revision: 1.1 $
*/
public interface AltrmiMarshalledInvocationHandler {
/**
* Method handleInvocation
*
*
* @param request
*
* @return
*
*/
byte[] handleInvocation(byte[] request);
}
1.1 jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/common/SerializationHelper.java
Index: SerializationHelper.java
===================================================================
/*
* Created by IntelliJ IDEA.
* User: Administrator
* Date: Jan 26, 2002
* Time: 2:36:56 PM
* To change template for new class use
* Code Style | Class Templates options (Tools | IDE Options).
*/
package org.apache.commons.altrmi.common;
import java.io.ByteArrayOutputStream;
import java.io.ObjectOutputStream;
import java.io.IOException;
import java.io.ByteArrayInputStream;
import java.io.ObjectInputStream;
public class SerializationHelper {
public static byte[] getBytesFromInstance(Object instance) throws IOException {
ByteArrayOutputStream bAOS = new ByteArrayOutputStream();
ObjectOutputStream oOs;
oOs = new ObjectOutputStream(bAOS);
oOs.writeObject(instance);
oOs.flush();
byte[] aBytes = bAOS.toByteArray();
oOs.close();
bAOS.close();
return aBytes;
}
public static Object getInstanceFromBytes(byte[] byteArray) throws IOException, ClassNotFoundException {
ByteArrayInputStream bAIS = new ByteArrayInputStream(byteArray);
ObjectInputStream oIs = new ObjectInputStream(bAIS);
Object obj = oIs.readObject();
oIs.close();
return obj;
}
}
1.5 +4 -21 jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/server/impl/ServerCustomStreamReadWriter.java
Index: ServerCustomStreamReadWriter.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/server/impl/ServerCustomStreamReadWriter.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ServerCustomStreamReadWriter.java 18 Jan 2002 09:58:13 -0000 1.4
+++ ServerCustomStreamReadWriter.java 26 Jan 2002 15:22:17 -0000 1.5
@@ -12,13 +12,8 @@
import org.apache.commons.altrmi.common.AltrmiRequest;
import org.apache.commons.altrmi.common.AltrmiReply;
+import org.apache.commons.altrmi.common.SerializationHelper;
-import java.io.ObjectOutputStream;
-import java.io.ObjectInputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
@@ -30,7 +25,7 @@
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
- * @version $Revision: 1.4 $
+ * @version $Revision: 1.5 $
*/
public class ServerCustomStreamReadWriter extends ServerStreamReadWriter {
@@ -54,15 +49,7 @@
private void writeReply(AltrmiReply altrmiReply) throws IOException {
- ByteArrayOutputStream bAOS = new ByteArrayOutputStream();
- ObjectOutputStream objectOutputStream;
-
- objectOutputStream = new ObjectOutputStream(bAOS);
-
- objectOutputStream.writeObject(altrmiReply);
- objectOutputStream.flush();
-
- byte[] aBytes = bAOS.toByteArray();
+ byte[] aBytes = SerializationHelper.getBytesFromInstance(altrmiReply);
mDataOutputStream.writeInt(aBytes.length);
mDataOutputStream.write(aBytes);
@@ -76,10 +63,6 @@
mDataInputStream.read(byteArray);
- ByteArrayInputStream bAIS = new ByteArrayInputStream(byteArray);
- ObjectInputStream oOs = new ObjectInputStream(bAIS);
- AltrmiRequest ar = (AltrmiRequest) oOs.readObject();
-
- return ar;
+ return (AltrmiRequest) SerializationHelper.getInstanceFromBytes(byteArray);
}
}
1.1 jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/server/impl/direct/DirectMarshalledInovcationAdapter.java
Index: DirectMarshalledInovcationAdapter.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.server.impl.direct;
import org.apache.commons.altrmi.common.AltrmiInvocationHandler;
import org.apache.commons.altrmi.common.AltrmiReply;
import org.apache.commons.altrmi.common.AltrmiRequest;
import org.apache.commons.altrmi.common.AltrmiMarshalledInvocationHandler;
import org.apache.commons.altrmi.common.SerializationHelper;
import org.apache.commons.altrmi.server.AltrmiServer;
import java.io.IOException;
/**
* Class DirectInovcationAdapter
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
* @version $Revision: 1.1 $
*/
public class DirectMarshalledInovcationAdapter implements AltrmiMarshalledInvocationHandler {
private AltrmiServer mServer;
/**
* Constructor DirectInovcationAdapter
*
*
* @param server
*
*/
public DirectMarshalledInovcationAdapter(AltrmiServer server) {
mServer = server;
}
/**
* Method handleInvocation
*
*
* @param request
*
* @return
*
*/
public byte[] handleInvocation(byte[] request) {
try {
AltrmiRequest ar = (AltrmiRequest) SerializationHelper.getInstanceFromBytes(request);
AltrmiReply reply = mServer.processRequest(ar);
return SerializationHelper.getBytesFromInstance(reply);
} catch (IOException e) {
e.printStackTrace();
return null;
} catch (ClassNotFoundException e) {
e.printStackTrace();
return null;
}
}
}
1.1 jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/server/impl/direct/DirectMarshalledServer.java
Index: DirectMarshalledServer.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.server.impl.direct;
import org.apache.commons.altrmi.server.impl.AbstractServer;
import org.apache.commons.altrmi.server.AltrmiServerException;
import org.apache.commons.altrmi.common.AltrmiReply;
import org.apache.commons.altrmi.common.AltrmiRequest;
import org.apache.commons.altrmi.common.AltrmiInvocationException;
/**
* Class DirectServer
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
* @version $Revision: 1.1 $
*/
public class DirectMarshalledServer extends AbstractServer {
/**
* Method start
*
*/
public void start() {
mState = STARTED;
}
/**
* Method stop
*
*/
public void stop() {
mState = SHUTTINGDOWN;
killAllConnections();
mState = STOPPED;
}
/**
* Method processRequest
*
*
* @param request
*
* @return
*
*/
public AltrmiReply processRequest(AltrmiRequest request) {
if (mState == STARTED) {
return super.processRequest(request);
} else {
throw new AltrmiInvocationException("Service is not started");
}
}
}
1.1 jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/test/DirectMarshalledTest.java
Index: DirectMarshalledTest.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.test;
import org.apache.commons.altrmi.server.impl.direct.DirectServer;
import org.apache.commons.altrmi.server.impl.direct.DirectInovcationAdapter;
import org.apache.commons.altrmi.server.impl.direct.DirectMarshalledServer;
import org.apache.commons.altrmi.server.impl.direct.DirectMarshalledInovcationAdapter;
import org.apache.commons.altrmi.server.impl.classretrievers.JarFileClassRetriever;
import org.apache.commons.altrmi.common.AltrmiInvocationHandler;
import org.apache.commons.altrmi.common.AltrmiConnectionException;
import org.apache.commons.altrmi.common.AltrmiMarshalledInvocationHandler;
import org.apache.commons.altrmi.client.AltrmiHostContext;
import org.apache.commons.altrmi.client.AltrmiFactory;
import org.apache.commons.altrmi.client.impl.direct.DirectHostContext;
import org.apache.commons.altrmi.client.impl.direct.DirectMarshalledHostContext;
import org.apache.commons.altrmi.client.impl.ServerClassAltrmiFactory;
import org.apache.commons.altrmi.client.impl.ClientClassAltrmiFactory;
import java.io.IOException;
/**
* Class DirectTest
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
* @version $Revision: 1.1 $
*/
public class DirectMarshalledTest {
private static String mServerOrClientFactory;
/**
* Method main
*
*
* @param args
*
* @throws Exception
*
*/
public static void main(String[] args) throws Exception {
System.out.println("Direct Test");
mServerOrClientFactory = args[0];
DirectMarshalledServer ds = new DirectMarshalledServer();
if (mServerOrClientFactory.equals("S")) {
ds.setClassRetriever(new JarFileClassRetriever("build/classes2"));
}
TestInterfaceImpl ti = new TestInterfaceImpl();
ds.publish(ti, "Hello", TestInterface.class, TestInterface2.class);
ds.start();
DirectMarshalledTestClient dtc = new DirectMarshalledTestClient(new DirectMarshalledInovcationAdapter(ds));
Thread thread = new Thread(dtc);
thread.start();
}
/**
* Class DirectTestClient
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
* @version $Revision: 1.1 $
*/
static class DirectMarshalledTestClient implements Runnable {
private AltrmiMarshalledInvocationHandler mInvocationHandler;
/**
* Constructor DirectTestClient
*
*
* @param ih
*
*/
public DirectMarshalledTestClient(AltrmiMarshalledInvocationHandler ih) {
mInvocationHandler = ih;
}
/**
* Method run
*
*
*/
public void run() {
try {
AltrmiHostContext arhc = new DirectMarshalledHostContext(mInvocationHandler);
AltrmiFactory af = null;
if (mServerOrClientFactory.equals("S")) {
af = new ServerClassAltrmiFactory(false);
} else {
af = new ClientClassAltrmiFactory(false);
}
af.setHostContext(arhc);
TestInterface ti = (TestInterface) af.lookup("Hello");
TestClient tc = new TestClient(ti);
af.close();
} catch (IOException ioe) {
System.err.println("Some problem during connection to server : "
+ ioe.getMessage());
} catch (AltrmiConnectionException ace) {
System.err.println("Some problem during connection to server : "
+ ace.getMessage());
}
}
}
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>