- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
RMI例1 (续) //Invoke the remote method. System.out.println(server.sayHello()); } catch(Exception e) { e.printStackTrace(); } } } 客户端总是使用远程接口作为服务类型,无需知道远程服务的实际类名 Lookup()是命名类的静态方法,其中的名字必须是服务器已经注册的名字,这里为HelloServer,该名字前面为服务正在运行的主机名字或IP地址 因为Lookup()方法返回类型为Object,故返回值必须强制转换为Ihello接口 RMI例1 (续) 现在我们能够编译客户端和服务器代码: javac IHello.java javac HelloServer.java javac HelloClient.java 下一步,我们使用rmic工具来生成所需的存根和框架类 rmic HelloServer 该操作生成存根和框架类: HelloServer-Stub.class HelloServer-Skel.class (Java 2中不需要) RMI例1 (续) RMI例1 (续) 下一步是让类文件可通过网络访问。目前,假设客户端和服务器均可经由其CLASSPATH在本地可得所有这些类文件。这样我们就不必担心网络上的动态类下载。我们将在下一个实例中看到如何适当处理这种情形。 客户端必须在其CLASSPATH具有的文件包括: IHello.class HelloClient.class HelloServer_Stub.class 服务器必须在其CLASSPATH具有的文件包括: IHello.class HelloServer.class HelloServer_Stub.class HelloServer_Skel.class (Java 2中不需要) RMI例1 (续) 如果此例在Java 2中运行,就需要一个安全策略文件,它允许下载类文件。 下面是允许做任何事情的策略文件实例! grant { permission java.security.AllPermission; }; 下面的策略文件允许程序连接到任何端口号大于1024的主机或接受任何端口号大于1024主机的连接,或允许连接到任何端口80的主机: grant { permission .SocketPermission *:1024-65535, connect,accept; permission .SocketPermission *:80, connect; }; RMI例1 (续) 现在已准备好运行该应用程序: 在服务器端: =启动rmiregistry: rmiregistry =启动服务器: java -Djava.security.policy=policy HelloServer 在客户端: =启动客户端: java -Djava.security.policy=policy HelloClient 在客户端获得输出: Hello, World! RMI 例2 本例中的服务器实现一个通用计算引擎。 其思想是客户端有一些耗费CPU时间的作业要做,但本身没有能力去做。所以客户端将要做的任务封装为一个对象并将其发送给要执行的服务器。服务器端的计算引擎运行该作业并将将结果返回给客户端。 服务器端的计算引擎是完全通用的,且能够执行由客户端请求的任何类型的任务。 该例演示一个设计模式。是哪个模式?? RMI 例2 (续) 首先,定义远程接口: package compute; import java.rmi.*; /** * Generic Compute Interface. */ public interface Compute extends Remote { Object executeTask(Task t) throws RemoteException; } RMI例2 (续) 下面是该例将需要的通用任务接口: package compute; import java.io.Serializable; /** * Task Interface. */ public interface Task extends Serializable { Object execute(); } RMI例2 (续) 下面是远程服务器: package engine; import java.rmi.*; import java.rmi.server.*; import compute.*; /** * Server that executes a task specified in a Task obje
您可能关注的文档
最近下载
- 野外生存方向辨别篇.ppt VIP
- 幼儿养成教育课件.pptx VIP
- 2023年最新资料员考试题库附参考答案【精练】.docx
- 以大一学生的视角做一份药剂师生涯发展展示.pptx VIP
- Unit 3 Amazing animals Part B Start to read&C Reading time大单元整体说课稿(表格式)-2023-2024学年人教PEP版(2024)英语三年级上册.docx VIP
- 2025年全国消防日国旗下的讲话稿(33篇).docx
- 初中珍爱生命主题班会课件.pptx VIP
- 非常规地质工程一体化技术解决方案及应用.pptx VIP
- 幼儿园中班美术标准教案《有趣的蔬菜拓印.pptx VIP
- 初中音乐教学课件走进京剧.ppt VIP
原创力文档


文档评论(0)