首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

Java之RMI设计形式基本原理与示例

2013-01-27 
Java之RMI设计模式基本原理与示例1. NameRMI是Romote Method Invocation的缩写,就是远程方法调用。2. Inten

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

  

package com.sinosuperman.rmi;            import java.net.MalformedURLException;      import java.rmi.Naming;      import java.rmi.NotBoundException;      import java.rmi.RemoteException;            public class TestRMIClient {          public static void main(String[] args) {              try {                  TestRMIService testService = (TestRMIService) Naming.lookup("rmi://localhost:1234/testrmi");                  System.out.println(testService.testHello());              } catch (MalformedURLException e) {                  e.printStackTrace();              } catch (RemoteException e) {                  e.printStackTrace();              } catch (NotBoundException e) {                  e.printStackTrace();              }          }      }  


5. Test

(1)运行TestServer

在Eclipse主界面的Package Explorer中你所创建的测试RMI的工程中的com.sinosuperman包中,右击TestServer,选择Run As,选择Java Application。

这时界面上会显示:

“注册远程对象成功”


(2)运行TestClient

在Eclipse主界面的Package Explorer中你所创建的测试RMI的工程中的com.sinosuperman.rmi包中,右击TestClient,选择Run As,选择Java Application。

这时界面上会显示:

“I'm RMI, Hello World!”

热点排行