最后,就要将服务器和客户机部署到机器上。
1,将所有的类文件编译为class文件。然后在dos方式下使用
就可以生成客户桩,名为ProductImpl_Stub.class。
2,把客户端代码和接口代码拷贝到客户机器上。
3,运行rmiregistry
程序,启动注册系统,使得服务器可以注册在机器上,以供客户调用。
4,启动http服务。将接口类和客户桩类放在http服务器上,使得客户可以下载。假设这两个文件的下载目录是http://91.1.1.119/download/
5,使用start
java -Djava.rmi.server.codebase= http://91.1.1.119/download/ ProductServer
运行创建服务器对象的程序。
其中的-Djava.rmi.server.codebase= http://91.1.1.119/download/ 指明客户程序下载客户桩的地址。
6,因为rmi有
安全限制,所以在客户端必须建立一个策略文件。假设名为client.policy
文件的内容为
grant { permission java.net.SocketPermission "91.1.1.119:1024-65535","connect"; permission java.net.SocketPermission "91.1.1.119:80","connect"; }; |
使用 start java -Djava.security.policy=client.policy ProductClient 启动客户端,客户端就可以连接80端口(http端口)和1024-65535的端口(其中包含了rmi的缺省端口1099)。之后就可以看到程序的执行结果。
以上就是使用rmi进行远程方法调用的基本过程。
但是,应该注意到,rmi有一个很大的限制,那就是只能在java编写的对象之间使用,如果要在不同的语言写成的对象之间通讯,那就需要CORBA的帮助