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. }  

  • 1
  • 2
  • 下一页

相关内容