RMI应用的部署及类的动态加载

来源:互联网 发布:传输我的数据 安卓 编辑:程序博客网 时间:2024/05/11 12:43

这是根据我上一篇Java RMI实例的代码进行的配置(http://blog.csdn.net/error/404.html?from=http%3a%2f%2fblog.csdn.net%2fzlp1992%2farticle%2fdetails%2f40455405)

远程对象一般分布在服务器端,当客户端试图调用远程对象的方法时,如果在客户端还不存在远程对象所依赖的类文件,如远程方法的参数和返回值对应的类文件,客户端会从java.rmi.server.codebase系统属性指定的位置动态加载该类文件。当服务器端访问客户端的远程对象时也一样。

RMI框架的动态加载类的机制:被动态加载的类的文件都集中放在网络的同一个地方,如果类被修改,只要更新这个地方的类文件就行了。

以前一个例子的文件来测试:

我们将前面的例子中的class文件如下放置

F:\test\client\  : Calculator.class  CalculatorClient.class

client目录:这个目录被发布到客户进程所在的主机上

F:\test\server\  : Calculator.class  CalculatorImpl.class  CalculatorServer.class

server 目录:放置了运行服务器程序所有的类文件,如果使用JDK1.4或者更低的版本,还要把存根类(CalculatorImpl_Stub.class)的文件也放到该目录下。这个目录被发布到服务器进程所在的主机上。

F:\test\download\  : Calculator.class

download 目录:用于动态加载类的目录。java.rmi.server.codebase系统属性就指向这个目录。客户程序、服务器程序及RMI注册表都会从这个目录下动态加载有关类文件。Download目录可以发布到服务器程序所在的主机上,或者网络的其他主机,只要让java.rmi.server.codebase系统属性指向它就行。

下面首先在同一台主机运行本程序

(1)      在DOS,运行命令“start rmiregistry”,这是会另外弹出一个空窗口



(2)      在DOS下,转到F:\test\server目录下,运行命令:

start  java –Djava.rmi.server.codebase=file:///F:\test\download\  CalculatorServer

注意空格,“-D”选项把java.rmi.server.codebase系统属性设为一个本地文件系统的目录“file:///F:\test\download\”,文件路径必须以“\”结束。如果是放在网络上,则可以这样指定:

-Djava.rmi.server.codebase=http://www.xxx.xx/download/ ,在该download目录下放置要动态加载的class文件

如果成功,会弹出如下界面



(3)      在DOS下,转到F:\test\client目录下,运行命令:

java CalculatorClient

运行成功会出现如下结果



对于在两台不同的机器上运行,首先你要保证作为服务器和客户端的两台机器之间能够ping通,其次在客户端除了要保存客户端程序,还要保存声明远程功能的接口对应的class文件,在上述例子中,客户端需要Calculator.class和CalculatorClient文件,



0 0
原创粉丝点击