服务提供者
1.接口
1.继承remote接口
2.声明RMI_URL和port
3.接口方法要throws RemoteException
public interface IUserService extends Remote {
String RMI_RRL = "rmi://localhost:55819/IUserService"; // 后面的IuserService可以自定义
int PORT = 55819;
String test1() throws RemoteException;
String test2() throws RemoteException;
}
2.实现类:
1.继承UnicastRemoteObject类
2.构造方法throws RemoteException
public class UserServiceImpl extends UnicastRemoteObject implements IUserService {
public UserServiceImpl() throws RemoteException {
super();
}
@Override
public String test1() {
return "服务端service的test1方法调用了";
}
@Override
public String test2() {
return "服务端service的test2方法调用了";
}
}
3.服务端初始化绑定路径和端口
public class RMIServer {
public static void main(String[] args) {
try {
IUserService userService = new UserServiceImpl();
//注册通讯路径
Naming.bind(userService.RMI_RRL, userService);
//注册通讯端口
LocateRegistry.createRegistry(userService.PORT);
System.out.println("初始化rmi绑定完成!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
服务调用者
1.方法接口——直接copy服务提供者的接口
public interface IUserService extends Remote {
//通讯路径 后面的IuserService可以自定义
String RMI_RRL = "rmi://localhost:55819/IUserService";
int PORT = 55819;
String test1() throws RemoteException;
String test2() throws RemoteException;
}
2.客户端
userService = (IUserService) Naming.lookup(userService.RMI_RRL);
public static void main(String[] args) throws RemoteException, MalformedURLException {
IUserService userService = null;
try {
userService = (IUserService) Naming.lookup(userService.RMI_RRL);
String s1 = userService.test1();
String s2 = userService.test2();
System.out.println("111" + s1);
System.out.println("222" + s2);
} catch (NotBoundException e) {
e.printStackTrace();
}
}