码迷,mamicode.com
首页 > 其他好文 > 详细

RMI 远程方法调用

时间:2020-07-26 00:26:04      阅读:52      评论:0      收藏:0      [点我收藏+]

标签:rmi   异常   ace   registry   cli   bin   服务   父类   lap   

步骤:  

  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   异常   ace   registry   cli   bin   服务   父类   lap   

原文地址:https://www.cnblogs.com/bhjqn/p/13376482.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!