
Java RMI详细介绍及简单实例
import java.rmi.Remote;
import java.rmi.RemoteException;
interface TestService extends Remote{
String say(String name) throws RemoteException;
}
//定义实现类
public class TestServiceImpl implements TestService {
private int i = 0;
@Override
public String say(String name) {
System.out.println("[Service] " + name + " -- say hello " + ++i);
return name + "say hello"; }
}
Service Provider
先启动服务提供者 Provider
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
public class TestServiceProviderMain {
public static void main(String[] args) throws Exception{
System.out.println("Service Provider 已启动");
//实例化要暴露给远程的接口
TestService impl = new TestServiceImpl();
//导出本地接口服务,端口8020
TestService testService = (TestService)UnicastRemoteObject.exportObject(impl, 8020);
//开启服务注册中心
Registry registry = LocateRegistry.createRegistry(8021);
//注册服务
registry.rebind("testService", testService);
}
}
Service Consumer
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class TestConsumerMain {
public static void main(String[] args) throws Exception{
//注册中心
Registry registry = LocateRegistry.getRegistry(8021);
//发现服务
TestService testService = (TestService)registry.lookup("testService");
//调用服务业务
String str = testService.say("小倩");
System.out.println("[Consumer] get remote info --- " + str);
}
}