歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java之RMI設計模式基本原理與示例

1. Name

RMI是Romote Method Invocation的縮寫,就是遠程方法調用。


2. Intent

具體的說,就是能夠通過這種機制,實現在一個JVM上調用另一個JVM上的Java對象的方法。


3. Structure

(1)RMI Interface and Class

第一步:繼承了Remote的interface

定義一個繼承了Remote的interface,命名為TestRMIService。在其中有我們期望在Client端調用的方法testHello(),注意要拋出RemoteException。


第二步:繼承了UnicastRemoteObject且實現了TestRMIService的class

定義一個繼承了UnicastRemoteObject且實現了TestRMIService的class,命名為TestRMIServiceImpl。在其中實現testHello方法。


(2)RMI Server

第一步:

定義一個class,命名為TestServer,其中有main方法。在main方法中實例化TestRMIService一個遠程對象,命名為testRMI。


第二步:

創建一個Registry,並向遠程對象testRMI注冊,注冊名為“rmi://locahost:1234/testrmi”。


(3)RMI Client

第一步:

定義一個class,命名為TestClient,其中有main方法。查詢注冊


第二步:

查詢注冊名為“rmi://locahost:1234/testrmi”的TestRMIService遠程對象,查詢結果為testRMI。


第三步:

調用遠程對象testRMI的方法testHello。


4. Sample Code

(1)TestRMIService

 

  1. package com.sinosuperman.rmi;  
  2.   
  3. import java.rmi.Remote;  
  4. import java.rmi.RemoteException;  
  5.   
  6. public interface TestRMIService extends Remote {  
  7.     public String testHello() throws RemoteException;  
  8. }  

(2)TestRMIServiceImpl

 

  1. package com.sinosuperman.rmi;  
  2.   
  3. import java.rmi.RemoteException;  
  4. import java.rmi.server.UnicastRemoteObject;  
  5.   
  6. public class TestRMIServiceImpl extends UnicastRemoteObject implements TestRMIService {  
  7.   
  8.     private static final long serialVersionUID = -9039976499370682232L;  
  9.       
  10.     public TestRMIServiceImpl() throws RemoteException {  
  11.     }  
  12.   
  13.     @Override  
  14.     public String testHello() throws RemoteException {  
  15.         return "I'm RMI, Hello World!";  
  16.     }  
  17. }  

Copyright © Linux教程網 All Rights Reserved