RMI 远程方法调用

Posted bhjqn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RMI 远程方法调用相关的知识,希望对你有一定的参考价值。

步骤:  

  1、创建远程接口,定义可以被远程调用的方法;

  2、实现远程接口;(extends UnicastRemoteObject)

  3、服务端向RMI registry注册服务器 ;(Naming.rebind("ServiceName",service)

  4、客户端找到服务端;(Naming.lookup(“rmi://127.0.0.1/ServiceName”))

 

技术图片
import java.rmi.*;

//(extends Remote)Remote是标记性接口,没有方法.
//接口可以继承接口
public interface MyRemote extends Remote {

    //声明可以被远程调用的方法
    //(throws RemoteException) 每个远程调用方法都被认为是有风险的,这样声明会强迫客户端注意这件事
    //(String) 返回值和参数会通过网络协议传送,所有必须是primitive或Serializable
    public String sayHello() throws RemoteException;
}
接口(MyRemote)
技术图片
import java.rmi.*;
import java.rmi.server.*;

//UnicastRemoteObject类会处理与远程有关的工作
public class MyRemoteImpl extends UnicastRemoteObject implements MyRemote {

    public String sayHello(){  //实现可以被远程调用的方法
        return "Server says, ‘Hey‘";
    }

    public MyRemoteImpl() throws RemoteException{}  //声明父类的构造函数会抛出异常
}
实现接口(MyRemoteImpl)
技术图片
import java.rmi.Naming;

public class MyRemoteServer {
    public static void main(String [] args){
        try{
            MyRemote service = new MyRemoteImpl();
            //帮服务命名,并向RMI registry注册(客户端会靠名字查询registry)
            Naming.rebind("RemoteHello",service);
        }catch(Exception ex){
            ex.printStackTrace();
        }
    }
}
服务器(MyRemoteServer)
技术图片
import java.rmi.*;

public class MyRemoteClient {
    public static void main(String[] args) {
        new MyRemoteClient().go();
    }

    public void go(){
        try {
            //(MyRemote)类型必须与服务器相同
            MyRemote service = (MyRemote) Naming.lookup("rmi://127.0.0.1/RemoteHello");

            String s = service.sayHello();

            System.out.println(s);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}
客户端(MyRemoteClient)

运行步骤: 

  1、rmic MyRemoteImpl (生成stub类)

  2、rmiregistry(启动RMI registry)

  3、java MyRemoteServer(启动服务)

  4、java MyRemoteClient(运行客户端)

以上是关于RMI 远程方法调用的主要内容,如果未能解决你的问题,请参考以下文章

RMI远程方法调用

Spring框架实现——远程方法调用RMI代码演示

远程方法调用(RMI)原理与示例

远程方法调用(RMI)原理与示例 (转)

RMI(Remote Method Invocation ) 概念恢复

Java RMI(远程方法调用)示例程序