发表于: 2020-07-15 22:34:30

1 1481


今天完成的事情:

1.学习RMI

单看理论还是有点难理解,写个入门项目实践一下。

主要有以下几个步骤:

1. 创建远程接口及声明远程方法

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.time.LocalDateTime;

public interface Clock extends Remote {
LocalDateTime currentTime() throws RemoteException;
}

2. 实现远程接口及远程方法

import java.rmi.RemoteException;
import java.time.LocalDateTime;

public class ClockImpl implements Clock{

public LocalDateTime currentTime() throws RemoteException {
return LocalDateTime.now();
   }
}

3. 启动RMI注册服务,并注册远程对象

import java.rmi.AlreadyBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;

public class ClockServer {
public static void main(String[] args) {
try{
Clock impl = new ClockImpl();
           Clock stub = (Clock) UnicastRemoteObject.exportObject(impl,1099);
           LocateRegistry.createRegistry(1099);
           Registry registry = LocateRegistry.getRegistry();
           registry.bind("Clock",stub);
           System.out.println("ClockServer is ready.");
       }catch (RemoteException e){
System.out.println("创建远程对象异常");
           e.printStackTrace();
       } catch (AlreadyBoundException e) {
e.printStackTrace();
       }
}
}

4. 客户端查找远程对象,并调用远程方法

import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.time.LocalDateTime;

public class ClockClient {
public static void main(String[] args) throws Exception{
Registry registry = LocateRegistry.getRegistry(null);
       Clock clock = (Clock) registry.lookup("Clock");
       LocalDateTime dt = clock.currentTime();
       System.out.println("RMI result:" + dt);
   }
}

5. 执行程序:启动服务;运行客户端进行调用

这只是在本地模拟的,将项目部署到服务器,运行ClockServer:

本地运行ClockClient:


运行成功!


这里卡了好久,部署到服务器时地址需要修改一下:

只改下面的地址是不行的!!!必须加上面那句。


有点理解RMI了,我的理解是,将主要代码放到服务端,客户端直接远程调用方法即可,来实现调用另一台机器上的方法。


收获:初步学会使用RMI


明天计划完成的事情:

开始学习SpringRMI


返回列表 返回列表
评论

    分享到