Java RMI 简单示例

一、创建远程服务

1、创建 Remote 接口,MyRemote.java

import java.rmi.*;

public interface MyRemote extends Remote{

    public String sayHello() throws RemoteException;
}

2、实现 Remote,MyRemoteImpl.java

import java.rmi.*;
import java.rmi.server.*;

public class MyRemoteImpl extends UnicastRemoteObject implements MyRemote{

    public String sayHello(){
        return "Server says,'Hey'";
    }
    public MyRemoteImpl() throws RemoteException{}
    
    public static void main(String[] args){
        try{
            MyRemote service = new MyRemoteImpl();
            Naming.rebind("rmi://localhost:1099/Hello",service);
        }catch(Exception ex)
        {
            ex.printStackTrace();
        }
    }
}

3、编译。在以上 java 文件所在目录,按住 shift 键,右键,选择「在此处打开命令窗口」,执行

javac *.java

4、用 rmic 产生 stub。

rmic MyRemoteImpl

5、启动 RMI registry。

rmiregistry

6、启动远程服务。另外打开一个命令窗口,执行

java MyRemoteImpl

二、客户端调用远程方法

1、把第一步的 MyRemote.class 和 MyRemoteImpl_Stub.class 拷贝到客户端文件所在目录。

2、编写客户端代码 MyRemoteClient.java。

import java.rmi.*;

public class MyRemoteClient
{
    public static void main(String[] args)
    {
        new MyRemoteClient().go();
    }
    
    public void go()
    {
        try
        {
            MyRemote service=(MyRemote)Naming.lookup("rmi://localhost:1099/Hello");
            String s=service.sayHello();
            System.out.println(s);
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        }
    }
}

3、编译

javac *.java

4、运行客户端

java MyRemoteClient

参考资料:

1. Kathy Sierra. Bert Bates. 《Head First Java》中文版

原文地址:https://www.cnblogs.com/NaughtyBaby/p/4784505.html