快速业务通道

简单理解RMI - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17

简单理解RMI

时间:2011-04-13 海边沫沫

RMI (远程方法)是 Java 平台中建立分布式计算的基础, 2 年前我刚开始接触 J2EE 时,怎么看书都是不得要领,最近这几天闲着没事又翻了翻以前没有看懂的书,突然之间顿 悟了。

一、 简单的 RMI 示例:

要快速入门,最简单的方法就是看简单的例子。下面是我写的一个简单的示例:

首先,定义一个接口 IServer ,代码如下:

IServer.java 1 package rmistudy; 2 3 import java.rmi.Remote; 4 5  public  interface IServer extends Remote  { 6     public  void doSomeThing() throws java.rmi.RemoteException; 7 } 8 9

需要注意的是,这个接口从java.rmi.Remote接口扩展,并且这个接口中定义的方法都需 要抛出java.rmi.RemoteException异常。

接着,我们要根据这个接口来实现自己的服务器对象,所谓服务器对象,就是我们大脑中 想的远程对象,这个对象中定义的方法都是被别人来调用的。代码如下:

ServerImp.java package rmistudy; import java.rmi. * ; import java.rmi.server. * ; public  class ServerImp extends UnicastRemoteObject implements IServer  {      public ServerImp() throws RemoteException  {         super ();     }      public  void doSomeThing() throws RemoteException  {         System.out.println( " 不带参数的远程函数doSomeThing()被调用,该 信息显示在服务器端。 " );     }      public  static  void main(String[] args)  {         ServerImp server =  null ;         try {            server =  new ServerImp();         } catch (Exception e) {            System.out.println( " 创建远程对象失败: " );            System.out.println(e.getMessage());            System.exit( 0 );         }          try {            java.rmi.Naming.rebind( " //localhost/MyServer " , server);            System.out.println( " 远程对象绑定成功。 " );         } catch (Exception e) {            System.out.println( " 远程对象绑定失败: " );            System.out.println(e.getMessage());            System.exit( 0 );         }     } }

简单理解RMI(2)

时间:2011-04-13 海边沫沫

这个类很容易理解, doSomeThing() 方法只简单的输出被调用的信息。唯一的难点就在 main() 函数中,我们通过 java.rmi.Naming.rebind() 把我们的远程对象注册到 rmi 注册 表中,这样,别人就可以通过 java.rmi.Naming.lookup() 来查找我们的远程对象。那么, rmi 注册表在哪里呢? J2SDK 的 bin 目录下有一个程序 rmiregistry ,运行它就可以得到 一个注册表进程,我们可以通过它来绑定或者查找远程对象, java.rmi.Naming.rebind 函 数的第一个参数就是要指定注册表进程的位置,因为我这里运行在自己的机器上,所以是 //localhost/ ,如果是在别的机器上,可以用 IP 地址代替。

最后,我们写一个客户机,来调用这个远程对象的方法。代码如下:

Client.java

1 package rmistudy; 2 3 import java.rmi. * ; 4 5  public  class Client  { 6 7     public  static  void main(String[] args)  { 8        IServer server =  null ; 9 10         try { 11           

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号