e190. passing parameters to a remote method.txt

来自「这里面包含了一百多个JAVA源文件」· 文本 代码 · 共 72 行

TXT
72
字号
Arguments to remote methods must be primitive, serializable, or implement Remote. This example demonstrates the declaration and use of all three parameter types. 
1. Define the remote interface. 

    import java.rmi.*;
    
    public interface RObject extends Remote {
        // This parameter is primitive.
        void primitiveArg(int num) throws RemoteException;
    
        // This parameter implements Serializable.
        void byValueArg(Integer num) throws RemoteException;
    
        // This parameter implements Remote.
        void byRefArg(ArgObject arg) throws RemoteException;
    }
    
    public interface ArgObject extends Remote {
        int aMethod() throws RemoteException;
    }

2. Define the remote object implementation. 
    import java.rmi.*;
    import java.rmi.server.UnicastRemoteObject;
    
    public class RObjectImpl extends UnicastRemoteObject implements RObject {
        public RObjectImpl() throws RemoteException {
            super();
        }
        public void primitiveArg(int num) throws RemoteException {
        }
        public void byValueArg(Integer num) throws RemoteException {
        }
        public void byRefArg(ArgObject arg) throws RemoteException {
        }
    }

3. Compile the remote object implementation. 
    > javac RObject.java RObjectImpl.java

4. Generate the skeletons and stubs. 
    > rmic RObjectImpl


5. Create an instance of the remote object and bind it to the RMI registry. 
    try {
        RObject robj = new RObjectImpl();
        Naming.rebind("//localhost/RObjectServer", robj);
    } catch (MalformedURLException e) {
    } catch (UnknownHostException e) {
    } catch (RemoteException e) {
    }

6. Look up the remote object and pass the parameters. 
    try {
        // Look up the remote object
        RObject robj = (RObject) Naming.lookup("//localhost/RObjectServer");
    
        // Pass a primitive value as argument
        robj.primitiveArg(1998);
    
        // Pass a serializable object as argument
        robj.byValueArg(new Integer(9));
    
        // Pass a Remote object as argument
        robj.byRefArg(new ArgObjectImpl());
    } catch (MalformedURLException e) {
    } catch (UnknownHostException e) {
    } catch (NotBoundException e) {
    } catch (RemoteException e) {
    }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?