Commit 21cf98f6 by Ingo Proetel Committed by Nathanael Nerode

UnicastRef.java: make constructor public and check if serverobject is compatible in case client...

2003-08-11  Ingo Proetel  <proetel@aicas.com>

        * gnu/java/rmi/server/UnicastRef.java: make constructor public and check if serverobject
        is compatible in case client and server are running in the same VM
	(remerged from Classpath on 2003-09-20)

From-SVN: r71611
parent 94322beb
2003-08-11 Ingo Proetel <proetel@aicas.com>
* gnu/java/rmi/server/UnicastRef.java: make constructor public and check if serverobject
is compatible in case client and server are running in the same VM
(remerged from Classpath on 2003-09-20)
2003-09-19 David Daney <ddaney@avtrex.com> 2003-09-19 David Daney <ddaney@avtrex.com>
* java/lang/ref/Reference.java (clear): Set referent to null and * java/lang/ref/Reference.java (clear): Set referent to null and
......
...@@ -37,32 +37,24 @@ exception statement from your version. */ ...@@ -37,32 +37,24 @@ exception statement from your version. */
package gnu.java.rmi.server; package gnu.java.rmi.server;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.rmi.Remote; import java.rmi.Remote;
import java.rmi.RemoteException; import java.rmi.RemoteException;
import java.rmi.server.RemoteRef; import java.rmi.server.ObjID;
import java.rmi.server.RMISocketFactory; import java.rmi.server.Operation;
import java.rmi.server.RMIClientSocketFactory; import java.rmi.server.RMIClientSocketFactory;
import java.rmi.server.RMIServerSocketFactory;
import java.rmi.server.RemoteObject;
import java.rmi.server.RemoteCall; import java.rmi.server.RemoteCall;
import java.rmi.server.UnicastRemoteObject; import java.rmi.server.RemoteObject;
import java.rmi.server.Operation; import java.rmi.server.RemoteRef;
import java.rmi.server.ObjID;
import java.rmi.server.UID; import java.rmi.server.UID;
import java.lang.reflect.Method;
import java.io.ObjectOutput;
import java.io.ObjectInput;
import java.io.IOException;
import java.net.Socket;
import java.net.InetAddress;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.lang.reflect.InvocationTargetException;
public class UnicastRef public class UnicastRef
implements RemoteRef, ProtocolConstants { implements RemoteRef, ProtocolConstants {
...@@ -73,8 +65,9 @@ UnicastConnectionManager manager; ...@@ -73,8 +65,9 @@ UnicastConnectionManager manager;
/** /**
* Used by serialization, and let subclass capable of having default constructor * Used by serialization, and let subclass capable of having default constructor
*/ */
//private // must be public otherwise java.rmi.RemoteObject cannot instantiate this class
UnicastRef() { // -- iP
public UnicastRef() {
} }
public UnicastRef(ObjID objid, String host, int port, RMIClientSocketFactory csf) { public UnicastRef(ObjID objid, String host, int port, RMIClientSocketFactory csf) {
...@@ -90,7 +83,10 @@ public Object invoke(Remote obj, Method method, Object[] params, long opnum) thr ...@@ -90,7 +83,10 @@ public Object invoke(Remote obj, Method method, Object[] params, long opnum) thr
// Check if client and server are in the same VM, then local call can be used to // Check if client and server are in the same VM, then local call can be used to
// replace remote call, but it's somewhat violating remote semantic. // replace remote call, but it's somewhat violating remote semantic.
Object svrobj = manager.serverobj; Object svrobj = manager.serverobj;
if(svrobj != null){
// Make sure that the server object is compatible. It could be loaded from a different
// classloader --iP
if(svrobj != null && method.getDeclaringClass().isInstance(svrobj)){
//local call //local call
Object ret = null; Object ret = null;
try{ try{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment