快速业务通道

用RMI开发基于Java的企业分布式应用 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
c enterprise\distribute\*.java // make stub and skeleton code rmic enterprise.distribute.InfoDistributeService

运行完毕后,在当前目录生成下列文件(即调动代码):

InfoDistributeService_Stub.class InfoDistributeService_Skel.class

5、用rmiregistry找到远程对象

导出服务器方的对象之后,就可以远程访问,但客户机还要设法与这些远程对象取得联系。

由于分布式应用程序可能涉及许多不同机器,因此通信的所有机器对之间需要建立初始连接,换句话说,就是要设法找到初始远程对象,这项工作通过rmiregistry命令执行。

JDK开发工具提供了实用程序RMI Registry,用来维护文本名和远程对象之间的映射,可以进行远程访问。

在客户机方,RMI注册表可以通过同一java.rmi.Naming类的lookup()静态方法用程序访问。例如,远程主机为iServer,远程对象实例为InfoDistributeService实例,远程端口号为5678,则客户机如果查找远程主机iServer中的远程InfoDistributeService实例,那么引用实例时须使用远程接口InfoDistributeRemote,代码如下:

InfoDistributeRemote iServer=( InfoDistributeRemote)Naming.lookup("rmi://iServer:5678/InfoDistributeService");

在服务器方,导出的远程对象可以通过java.rmi.Naming类在本地注册rmiregistry的运行实例。例如,用rebind()方法将iService中的InfoDistributeService的实例与名称InfoDistributeService相关联。

InfoDistributeService iService=new InfoDistributeService(); Naming.rebind("/ InfoDistributeService",iService);

综上所述,InfoDistributeRemote是个Java接口,因此iServer实际上是实现InfoDistributeRemote接口的本地对象实例,它不在远程,而是远程InfoDistributeService的本地表示。也就是说,它是由前述rmic工具自动生成的残根码InfoDistributeService_Stub.class的本地实例。图3显示了远程对象调用的工作原理。

用RMI开发基于Java的企业分布式应用 - 编程入门网

图2 远程对象调用的工作原理

从图2可以看出,客户机实现通过iServer变量维护远程对象的调用。事实上,iServer引用变量是实现InfoDistribute接口的对象的本地引用,该对象是InfoDistributeService残根实现。这个残根和服务器方的框架一起通过InfoDistributeRemote接口调动/反调动所有远程调用。

当我们把InfoDistributeService看成是实现InfoDistributeRemote接口的本地实例的时候,残根代码只在幕后进行工作,而实现这一切则变得非常透明。

由上述原理,可以进一步设计完善客户机和服务器代码,进而编写出完整的应用程序。

用RMI开发基于Java的企业分布式应用(5)

时间:2010-12-05

6、运行测试RMI分布式应用

在确认已经设计好必须的几大类模块后,我们开始按以下步骤,运行并测试该信息发布系统的基本功能(即仅仅实现远程接口中声明的getRemoteInfo()方法)。

在前面定义的包enterprise.distribute中,执行javac命令编译后缀为.java的源文件。

javac enterprise/distribute/*.java

接着,用RMIC工具生成残根与框架。

rmic enterprise.distribute.InfoDistributeService

编译之后,需要确定客户机与服务器发行版本的内容。因此,需用jar命令,将客户机与服务器发行版本包装成 .jar文件。 其中,包装服务器的文件命令如下:

jar cvf InfoDistributeService.jar enterprise\distribute\InfoDistributeService.class enterprise\distribute\InfoDistributeRemote.class enterprise\distribute\InfoDistributeService_Stub.class enterprise\distribute\InfoDistributeService_Skel.class

同样,包装客户机的类似于以上命令。

运行RMI应用程序

完成了第一阶段的所有RMI试验,然后运行信息发布应用程序。按照Java规

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号