Java 远程方法调用,即 Java RMI(Java Remote Method Invocation)是 Java 编程语言里,一种用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象。远程方法调用特性使 Java 编程人员能够在网络环境中分布操作。RMI 全部的宗旨就是尽可能简化远程接口对象的使用。

1.实现步骤

  1. 编写远程服务接口,该接口必须继承 java.rmi.Remote 接口,方法必须抛出 java.rmi.RemoteException 异常;
  2. 编写远程接口实现类,该实现类必须继承 java.rmi.server.UnicastRemoteObject 类;
  3. 运行 RMI 编译器(rmic),创建客户端 stub 类和服务端 skeleton 类;
  4. 启动一个 RMI 注册表,以便驻留这些服务;
  5. 在 RMI 注册表中注册服务;
  6. 客户端查找远程对象,并调用远程方法;

——
1:创建远程接口,继承 java.rmi.Remote 接口

  1. public interface GreetService extends java.rmi.Remote {
  2. String sayHello(String name) throws RemoteException;
  3. }

2:实现远程接口,继承 java.rmi.server.UnicastRemoteObject 类

  1. public class GreetServiceImpl extends java.rmi.server.UnicastRemoteObject implements GreetService {
  2. private static final long serialVersionUID = 3434060152387200042L;
  3. public GreetServiceImpl() throws RemoteException {
  4. super();
  5. }
  6. @Override
  7. public String sayHello(String name) throws RemoteException {
  8. return "Hello " + name;
  9. }
  10. }

3:生成 Stub 和 Skeleton;
4:执行 rmiregistry 命令注册服务
5:启动服务

  1. LocateRegistry.createRegistry(1098);
  2. Naming.bind("rmi://10.108.1.138:1098/GreetService", new GreetServiceImpl());

6.客户端调用

  1. GreetService greetService = (GreetService)
  2. Naming.lookup("rmi://10.108.1.138:1098/GreetService");
  3. System.out.println(greetService.sayHello("Jobs"));