- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java 远程方法调用 RMI 介绍与示例
1、定义
Java 远程方法调用 ,即 JavaRMI (JavaRemoteMethodInvocation )是 Java 编程语言里,一种用于实现远程过程调用 的应用程序编程接口 。它使客户机上运行的程序可以调用远程服务器上 的对象。远程方法调用特性使 Java 编程人员能够在网络环境中分布操作。RMI 全部的宗旨就是尽可能简化远程接
口对象的使用。
JavaRMI 极大地依赖于接口。在需要创建一个远程对象的时候,程序员通过传递一个接口来隐藏底层的实现细节。客户端得到的远程对象句柄正好与本地的根代码连 接,由后者负责透过网络通信。这样一来,程序员只需关心如何通过自己的接口句柄发送消息。
接口的两种常见实现方式是:最初使用JRMP (JavaRemoteMessageProtocol ,Java 远程消息交换协议)实现;此外还可以用与 CORBA 兼容的方法实 现。RMI 一般指的是编程接口,也有时候同时包括 JRMP 和 API(应用程序编程接口 ),而 RMI-IIOP 则一般指 RMI 接口接管绝大部分的功能,以支持 CORBA 的实现。
最初的 RMIAPI 设计为通用地支持不同形式的接口实现。后来,CORBA 增加了传值(passbyvalue )功能,以实现 RMI 接口。然而 RMI-IIOP 和 JRMP 实现的接口并不完全一致。
所使用 Java 包的名字是 java.rmi 。
2、例子
创建 RMI 程序的 6 个步骤:
1、定义一个远程接口的接口,该接口中的每一个方法必须声明它将产生一个 RemoteException 异常。
2、定义一个实现该接口的类。
3、使用 RMIC 程序生成远程实现所需的残根和框架。
4、创建一个服务器,用于发布 2 中写好的类。
5、创建一个客户程序进行 RMI 调用。
6、启动 rmiRegistry 并运行自己的远程服务器和客户程序
packagermi;一、定义一个远程接口的接口,该接口中的每一个方法必须声明它将产生一个 RemoteException 异常
packagermi;
importjava.rmi.RemoteException;
importjava.rmi.RemoteException;
/**
* 第一步,定义一个远程接口,该接口中的每一个方法必须声明它将产生一个 RemoteException 异常
*/
//接口里定义一个返回字符串的远程方法 SayHello(),这个远程接口 I_Hello 必须是 public 的
// 它 必 须 从 java.rmi.Remote 继 承 而 来 , 接 口 中 的 每 一 个 方 法 都 必 须 抛 出 远 程 异 常
java.rmi.RemoteException。
//
//抛出这个异常的原因:由于任何远程方法调用实际上要进行许多低级网络操作,因此网络错误可能在调用过程中随时发生
//因此,所有的 RMI 操作都应放到 try-catch 块中
//需要从 Remote 继承
publicinterfaceI_Helloextendsjava.rmi.Remote{
//需要抛出 remote 异常
publicStringSayHello()throwsRemoteException;
}
packagermi;importjava.rmi.*;
packagermi;
importjava.rmi.*;
importjava.rmi.server.UnicastRemoteObject;
/**
* 第二步,定义一个实现远程接口的类
*/
//实现接口的类必须继承 UnicastRemoteObject 类,扩展 java.rmi.server.UnicastRemoteObject
publicclassHelloextendsUnicastRemoteObject// 必须从 UnicastRemoteObject 继承
implementsI_Hello{
publicHello()throwsRemoteException{// 需要一个抛出 Remote 异常的默认初始化方法
}
publicStringSayHello(){// 这个是实现 I_Hello 接口的方法
returnHelloworld!!;
}
}
三、使用 RMIC 程序生成远程实现所需的残根 Stub 和 框架这一步是关键,也是最容易出问题的地方,需要多说几句:
在 RMI 中,客户机上生成的调动调用参数和反调动返回值的代码称为残根。有的书上称这部分代码为“主干”。
服务器上生成的反调动调用参数和进行实际方法调用调动返回值的代码称为框架二中的 Hello
您可能关注的文档
最近下载
- 孟加拉海外工程重油发电机组安装施工组织设计(热控部分)-中英文版汇.doc VIP
- 2025年中考历史复习专项训练:中国古代史选择题100题(原卷版).pdf VIP
- 学堂在线《走进心理学》作业单元考核答案.docx VIP
- 环境影响评价报告公示:嘉兴市中华化工有限责任新建香兰素仓库嘉兴市南区大桥镇中环评报告.doc VIP
- 小学英语小学英语语法课件-一般现在时 (共29张PPT) 全国通用.ppt VIP
- 《大学物理A(一)》课程教学大纲(本科).pdf VIP
- 孟加拉海外工程重油发电机组安装施工组织方案设计书(建筑部分)-中英文版.doc VIP
- 企业数字化转型的动因和理念.pptx VIP
- 国开电大《企业文化》自测1-10答案.pdf VIP
- 竞聘维修班组长演讲稿.pptx
文档评论(0)