- 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分布式应用程序概述 收藏 RMI(Remote Method Invocation) RMI是分布式对象软件包,它简化了在多台计算机上的JAVA应用之间的通信。 必须在jdk1.1以上 RMI用到的类 java.rmi.Remote 所有可以被远程调用的对象都必须实现该接口 java.rmi.server.UnicastRemoteObject 所有可以被远程调用的对象都必须扩展该类 什么是RMI 远程方法调用是一种计算机之间对象互相调用对方函数,启动对方进程的一种机制, 使用这种机制,某一台计算机上的对象在调用另外一台计算机上的方法时,使用的程 序语法规则和在本地机上对象间的方法调用的语法规则一样。 优点 这种机制给分布计算的系统设计、编程都带来了极大的方便。 只要按照RMI规则设计程序,可以不必再过问在RMI之下的网络细节了,如:TCP和Socket等等。 任意两台计算机之间的通讯完全由RMI负责。调用远程计算机上的对象就像本地对象一样方便。 1、面向对象: RMI可将完整的对象作为参数和返回值进行传递,而不仅仅是预定义的数据类型。 也就是说,可以将类似Java哈西表这样的复杂类型作为一个参数进行传递。 2、可移动属性: RMI可将属性从客户机移动到服务器,或者从服务器移动到客户机。 3、设计方式: 对象传递功能使您可以在分布式计算中充分利用面向对象技术的强大功能,如二层和三层结构系统。 如果用户能够传递属性,那么就可以在自己的解决方案中使用面向对象的设计方式。 所有面向对象的设计方式无不依靠不同的属性来发挥功能,如果不能传递完整的对象——包括实现和类型 ——就会失去设计方式上所提供的优点。 4、安全性: RMI使用Java内置的安全机制保证下载执行程序时用户系统的安全。 RMI使用专门为保护系统免遭恶意小程序侵害而设计的安全管理程序。 5、便于编写和使用 RMI使得Java远程服务程序和访问这些服务程序的Java客户程序的编写工作变得轻松、简单。 远程接口实际上就是Java接口。 为了实现RMI的功能必须创建远程对象任何可以被远程调用的对象必须实现远程接口。但远程 接口本身并不包含任何方法。因而需要创建一个新的接口来扩展远程接口。 新接口将包含所有可以远程调用的方法。远程对象必须实现这个新接口,由于新的接口扩展了 远程接口,实现了新接口,就满足了远程对象对实现远程接口的要求,所实现的每个对象都将 作为远程对象引用。 个人总结: RMI说白了,就是提供了一种远程的方法调用。 这种调用简单方便,可以传递复杂java对象。现在流行的j2ee中的EJB的底层实现技术就是RMI,EJB的调用就是经过封装的,更高级的RMI调用。 下面我们就来写一个RMI的程序: 一.创建RMI程序的6个步骤: 1、定义一个远程接口的接口,该接口中的每一个方法必须声明它将产生一个RemoteException异常。 2、定义一个实现该接口的类。 3、使用RMIC程序生成远程实现所需的残根和框架。 4、创建一个服务器,用于发布2中写好的类。 5. 创建一个客户程序进行RMI调用。 6、启动rmiRegistry并运行自己的远程服务器和客户程序。 二. 程序详细说明 1.定义一个远程接口的接口,该接口中的每一个方法必须声明它将产生一个RemoteException异常。 import java.rmi.Remote;import java.rmi.RemoteException;public interface I_Hello extends java.rmi.Remote //需要从Remote继承{public String SayHello() throws RemoteException; //需要抛出remote异常}上面例子我们定义一个返回字符串的远程方法 SayHello(),这个远程接口 I_Hello必须是public的 ,它必须从java.rmi.Remote继承而来,接口中的每一个方法都必须抛出远程异常java.rmi.RemoteException。 抛出这个异常的原因 由于任何远程方法调用实际上要进行许多低级网络操作,因此网络错误可能在调用过程中随时发生。 因此,所有的RMI操作都应放到try-catch块中。 2、定义一个实现该接口的类。 import java.io.PrintStream;import java.rmi.*;import java.rmi.server.UnicastRemoteObject;public class Hello extends UnicastRemoteObject //必须从UnicastRemoteObject 继承implements I_Hello{public H
原创力文档


文档评论(0)