標籤:java rmi webservice 分布式
RMI就是遠程方法調用的簡寫。顧名思義,就是讓一台機器上的對象調用另外一個機器上的對象。RMI的用法非常簡單,首先是服務端定義一個介面(介面要擴充Remote介面),再實現這個介面(要擴充UnicastRemoteObject),再綁定到Naming靜態類中。用戶端通過Naming擷取一個遠程對象,就可以像普通的對象一樣調用遠程對象了。RMI中有個Stub類,它的作用就是Proxy 伺服器的介面對象,負責將方法的調用轉換成網路請求發送給伺服器,再從伺服器返回對象進行解碼。在JDK1.5中,Stub類會自動產生。
RIM可以傳輸代碼。用戶端可以向伺服器提交Runnable對象,Runnable對象中的代碼在服務端不存在。當服務端檢測到某個類不存在時,就會從用戶端下載某個類檔案。因此可以實現向伺服器提交重量級的計算任務。
RMI使用步驟如下:
// 第一步設計介面。public interface Hello extends Remote { public String hello() throws RemoteException;}// 第二步實現介面。public class HelloImpl extends UnicastRemoteObject implements Hello { public String hello() { return "hello"; }}// 第三步開啟服務。public class Server { public static void main(String[] argv) { Hello hello = new HelloImpl(); Registry registry = LocateRegistry.getRegistry(8888); registry.rebind("hello", hello); }}// 第四步使用。public class Client { public static void main(String[] argv) { Hello hello = Naming.lookup("rmi://127.0.0.1:8888/hello"); String s = hello.hello(); }}