分布式对象技术RMI.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
分布式对象技术RMI

分布式对象技术JavaRMI RMI(Remote Method Invocation)是基于Java技术的分布式编程模型, 为Java程序提供远程访问服务。 通过RMI允许对象在不同的Java虚拟机(Java Virtual Machine)之间进行通信。 套接字(Socket): Java支持基本的通信机制Socket通信,通信方式灵活能满足大多数应用的通信要求。 但使用Socket技术需要客户端和服务端都对传递的消息编码和解码。 JMS与RMI的区别:采用JMS服务,对象是在物理上异步地从网络的某个JVM上 直接移动到另一个JMV上。而RMI对象是绑定在本地JVM中,只有方法参数和返回 值是通过网络传送的。 5.1 RMI结构 RMI 实现结构可以分为三层: Stub/Skeleton层 远程引用层 传输层 客户调用远程对象 方法 Stub 远层引用层 TCP 远程对象 Skeleton 远层引用层 TCP RMI结构图 Sub/Skeleton层实现传输数据的调度和 反调度机制。调度就是把数据或对象 转换成字节流,反调度则把字节流转 换成数据或对象。 远程引用层定义了RMI连接的调用语义 即如何调用远程对象的方法。Java远程 方法协议(Java Remote Method Protocol) 使用java.rmi.server.RemoteRef 传输层实现字节流的传输,一般采用TCP/IP或UDP 5.2 采用RMI开发客户机/服务器应用程序步骤: 定义远程接口 实现这个远程接口 生成stub(客户代理)和skeleton(实体) 编写使用远程对象的客户程序 启动注册表并登记远程对象 运行服务器和客户程序 5.2.1 构建服务器程序 创建一个远程接口时,必须遵守下列规则: 远程接口必须为public 远程接口必须继承java.rmi.Remote 除应用程序本身有关异常外,远程接口中的每个方法都必须在自己的 throws中声明java.rmi.RemoteException 作为参数或返回值传递的一个远程对象,必须声明为远程接口,不可 声明为实现类。 1. 定义远程接口(服务接口) import java.rmi.Remote; import java.rmi.RemoteException; /** * RMI调用对象接口定义 * @author 王华东 */ public interface InterfaceService extends Remote { /**远程服务对象所必须实现的方法 * 所有的远程调用的方法,必须声明throws RemoteException * */ Object service(Object obj) throws RemoteException; } 2. 实现远程接口 /** * RMI服务对象接口实现,此对象将被RMI服务器导出做为远程服务对象 * @author 王华东 */ // 远程接口必须继承java.rmi.server.RemoteServer或它的子类 public class ImpService extends java.rmi.server.UnicastRemoteObject implements InterfaceService { public ImpService() throws java.rmi.RemoteException { super(); } /** * 客户端将要调用的方法示例 */ public Object service(Object obj) { System.out.println(RMI客户机请求: +obj); return System.currentTimeMillis()/1000 + : + obj.toString(); } } 3. 启动RMI服务器 import java.rmi.*; import java.rmi.registry.*; /** * 启动RMI服务器,导出服务对象 * @author 王华东 */ public class StartRMIServer { /**启动方法*/ public static void main(String[] args) { int listerPort=9911; //设置RMI监听器在9911端口 String serverIP=localhost; //监听的IP String serviceObjName=service; //要导出的服务对象名字 try { LocateRegistry.createRegistry(listerPort); //设置RMI

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档