首页 | 手机 | 笔记本 | 电脑硬件 | MP3 | 数码相机 | DV | 品牌机 | 办公 | 网络 | 服务器 | 投影机 | 新闻 | 游戏 | 学院 | 下载
RMI一步一步来
2006-1-4 9:22:00 文/ 出处:javafan.com
  RMI,远程方法调用(Remote Method Invocation)是Enterprise JavaBeans的支柱,是建立分布式Java应用程序的方便途径。RMI是非常容易使用的,但是它非常的强大。
  RMI的基础是接口,RMI构架基于一个重要的原理:定义接口和定义接口的具体实现是分开的。下面我们通过具体的例子,建立一个简单的远程计算服务和使用它的客户程序

  一个正常工作的RMI系统由下面几个部分组成:
  远程服务的接口定义
  远程服务接口的具体实现
  桩(Stub)和框架(Skeleton)文件
  一个运行远程服务的服务器
  一个RMI命名服务,它允许客户端去发现这个远程服务
  类文件的提供者(一个HTTP或者FTP服务器)
  一个需要这个远程服务的客户端程序
  下面我们一步一步建立一个简单的RMI系统。首先在你的机器里建立一个新的文件夹,以便放置我们创建的文件,为了简单起见,我们只使用一个文件夹存放客户端和服务端代码,并且在同一个目录下运行服务端和客户端。

  如果所有的RMI文件都已经设计好了,那么你需要下面的几个步骤去生成你的系统:

  1、 编写并且编译接口的Java代码
  2、 编写并且编译接口实现的Java代码
  3、 从接口实现类中生成桩(Stub)和框架(Skeleton)类文件
  4、 编写远程服务的主运行程序
  5、 编写RMI的客户端程序
  6、 安装并且运行RMI系统

  1、 接口
  第一步就是建立和编译服务接口的Java代码。这个接口定义了所有的提供远程服务的功能,下面是源程序:

  //Calculator.java
  //define the interface
  import java.rmi.Remote;

  public interface Calculator extends Remote
  {
   public long add(long a, long b)
   throws java.rmi.RemoteException;

   public long sub(long a, long b)
   throws java.rmi.RemoteException;

   public long mul(long a, long b)
   throws java.rmi.RemoteException;

   public long div(long a, long b)
   throws java.rmi.RemoteException;
  }
  注意,这个接口继承自Remote,每一个定义的方法都必须抛出一个RemoteException异常对象。

  建立这个文件,把它存放在刚才的目录下,并且编译。

  >javac Calculator.java

  2、 接口的具体实现

  下一步,我们就要写远程服务的具体实现,这是一个CalculatorImpl类文件:

  //CalculatorImpl.java
  //Implementation
  import java.rmi.server.UnicastRemoteObject

  public class CalculatorImpl extends UnicastRemoteObject implements Calculator
  {

   // 这个实现必须有一个显式的构造函数,并且要抛出一个RemoteException异常
   public CalculatorImpl()
   throws java.rmi.RemoteException {
   super();
   }

   public long add(long a, long b)
   throws java.rmi.RemoteException {
   return a + b;
   }

   public long sub(long a, long b)
   throws java.rmi.RemoteException {
   return a - b;
   }

   public long mul(long a, long b)
   throws java.rmi.RemoteException {
   return a * b;
   }

   public long div(long a, long b)
   throws java.rmi.RemoteException {
   return a / b;
   }
  }
  同样的,把这个文件保存在你的目录里然后编译他。

  这个实现类使用了UnicastRemoteObject去联接RMI系统。在我们的例子中,我们是直接的从UnicastRemoteObject这个类上继承的,事实上并不一定要这样做,如果一个类不是从UnicastRmeoteObject上继承,那必须使用它的exportObject()方法去联接到RMI。

  如果一个类继承自UnicastRemoteObject,那么它必须提供一个构造函数并且声明抛出一个RemoteException对象。当这个构造函数调用了super(),它久激活UnicastRemoteObject中的代码完成RMI的连接和远程对象的初始化。

  3、 桩(Stubs)和框架(Skeletons)

  下一步就是要使用RMI编译器rmic来生成桩和框架文件,这个编译运行在远程服务实现类文件上。

  >rmic CalculatorImpl

  在你的目录下运行上面的命令,成功执行完上面的命令你可以发现一个Calculator_stub.class文件,如果你是使用的Java2SDK,那么你还可以发现Calculator_Skel.class文件。


[第一页] 1 2 [下一页] [最后一页]
-
相关文章
-

更多相关:
在百度中更多内容:

- -
精彩推荐
IT产品热门报价
 手机 更多>>
 笔记本 更多>>
 数码产品 更多>>
 电脑硬件 更多>>
·注册淘宝会员购买便宜数码
IT世界下载频道 装机常用软件包  
泛泰超薄PG3500评测
笔记本电池真实性能全面调查
小巧高像素DC横评
3400元的6600GT游戏配置
·诺基亚 7610
·索尼爱立信 K750c
·摩托罗拉 E398
·索尼 VGN-Y18C
·戴尔 Insprion 2200
·明基 Joybook S52-101
·佳能 PowerShot A510
·索尼 DSC-T7
·索尼 DSC-T5 HOT
·佳能 PowerShot A610
·佳能 PowerShot A520
·联想 家悦C1066E
·千里走单骑
·如果爱 HOT
·无极
·千千静听
·暴风影音
·泡泡堂
·动漫音乐合集 HOT
·Firefox 1.5中文正式版
·Vagaa哇嘎 V2.6.2.8
·QQ视频录像机 V18.0
·Skype简体中文版
·完美卸载 2006
人物 男孩 女孩 白领 明星 杂志 部落 PARTY  
心随舞动 青春飞扬 Vivian
温柔乖乖女 番茄妹妹
书生意气 国学迷孟逸
精灵可爱并重任燕珊
·论坛专业解答:编辑在线四点半
·别再上当了!揭穿八大手机陷阱
·CPU经常是100%工作是什么故障?
·办公话题:兼容耗材犯不犯法?
·两天前配电脑,JS黑了多少?
·买手机惨遭毒打?深圳暴力(图)
·PS高招:让模糊照片清亮起来
·隐私:华为员工待遇全面揭秘
·围观----到底是谁麻木了???
·心理战!二战德军的色情传单图
·国产美女,不看是人生一大遗憾
·IT人生存状态:我不是IT精英
IT下载中心,2G带宽,绝无仅有
.............【IT下载中心隆重推出装机常用软件包】

重点推荐:手机 | 笔记本 | MP4 | 数码摄像机 | 电脑硬件 | 显示器 | 投影机 | 服务器 | 游戏 | 数码相机 | 诺基亚 | 摩托罗拉 | 三星 | 索尼爱立信 | 联想 | 戴尔
关于我们 - 联系方式 - 频道共建 - 招聘信息 - 网站大事记 - 网站地图 - 广告服务 - 我要投稿 - 颐高集团 - 编辑部的故事 - 报案中心
IT.com.cn 力倡IT文化,崇尚互联共享,欢迎各种媒体转载我们的原创作品[转载请注明出处]。
客服热线:020-61081800 EMAIL:webmaster@it.com.cn 经营许可证编号:浙B2-20040150
带宽支持:佛山电信 服务器支持:五舟
关注IT,关注IT.com.cn,请向你的5个QQ好友宣传IT.com.cn,多谢支持!
 [设为首页]


做中国最好的IT网站