Java中RMI遠端呼叫方法
阿新 • • 發佈:2018-12-16
之前有兩篇文章是關於RPC的,Java中的RMI則是一種特殊的RPC實現方式,都是遠端方法呼叫,即客戶端可以呼叫伺服器端的方法
下面實現一個Java RMI
1.建立遠端介面類RmiTest.java
package cn.ysjh;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface RMITest extends Remote {
public String test() throws RemoteException;
}
2.建立實現遠端介面的類RmiTestImpl.java
package cn.ysjh; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; public class RMITestImpl extends UnicastRemoteObject implements RMITest { public RMITestImpl() throws RemoteException { super(); } public String test() { return "hello world!"; } }
3.構建伺服器端Server.java
package cn.ysjh; import java.net.MalformedURLException; import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; public class Server { public Server() { try { RMITestImpl rmiTest = new RMITestImpl(); LocateRegistry.createRegistry(8880); try { Naming.rebind("rmi://localhost:8880/Service",rmiTest); System.out.println("Server start......."); } catch (MalformedURLException e) { e.printStackTrace(); } } catch (RemoteException e) { e.printStackTrace(); } } public static void main(String[] args){ new Server(); } }
4.構建客戶端Client.java
package cn.ysjh;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import java.rmi.RemoteException;
public class Client {
public static void main(String[] args) throws RemoteException {
try {
InitialContext context = new InitialContext();
RMITest lookup = (RMITest) context.lookup("rmi://localhost:8880/Service");
System.out.println("Client start...");
System.out.println(lookup.test());
} catch (NamingException e) {
e.printStackTrace();
}
}
}
執行時先執行伺服器端Server.java,然後再執行客戶端Client.java
執行效果截圖: