1、定义实体,实现序列化接口
public class User implements Serializable {
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
2、定义接口和实现类
public interface IHelloService extends Remote {
String sayHello(User user) throws RemoteException;
}
public class HelloServiceImpl extends UnicastRemoteObject implements IHelloService{
protected HelloServiceImpl() throws RemoteException {
super();
}
@Override
public String sayHello(User user) throws RemoteException{
System.out.println("this is server, say hello to " + user.getUsername());
return "success";
}
}
3、定义RMI服务端
public class RMIServer {
public static void main(String[] args) throws RemoteException, AlreadyBoundException, MalformedURLException {
//1、创建 HelloService 实例
IHelloService service = new HelloServiceImpl();
//2、获取注册表
LocateRegistry.createRegistry(8888);
//3、对象的绑定, 参数1:rmi//ip地址:端口/服务名 参数2:绑定的对象
Naming.bind("//127.0.0.1:8888/rmiserver",service);
}
}
4、定义客户端
public class RMIClient {
public static void main(String[] args) throws RemoteException, NotBoundException, MalformedURLException {
//1、从注册表中获取远程对象,强转
IHelloService service = (IHelloService) Naming.lookup("//127.0.0.1:8888/rmiserver");
//2、准备参数
User user = new User();
user.setUsername("jack");
//3、调用远程方法 sayHello
String message = service.sayHello(user);
System.out.println(message);
}
}