歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java之RMI設計模式基本原理與示例

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

日期:2017/3/1 10:47:46   编辑:Linux編程

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. import java.rmi.Remote;
  3. import java.rmi.RemoteException;
  4. public interface TestRMIService extends Remote {
  5. public String testHello() throws RemoteException;
  6. }

(2)TestRMIServiceImpl

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

Copyright © Linux教程網 All Rights Reserved