快速业务通道

用RMI进行远程方法调用 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
;Error "+e);    }   } }

通过代码可以看到,这个服务器首先创建了两个服务器对象。然后使用Naming.rebind()方法,将这个对象和一个名称联系(绑定)在一起。这个名称就是客户机查找服务器对象所使用的名称。Naming是java.rmi包中的类。这个类的作用是建立一套查找对象的命名机制。通过它就可以将绑定在特定名称上的对象找到。

4,编写客户端代码:

import java.rmi.*; import java.rmi.server.*; public class ProductClient {   public static void main(String[] args)   {    System.out.println("begin to invoke remote method");    System.setSecurityManager(new RMISecurityManager());    String url = "rmi://91.1.1.119:1099/";    try    {     file://查找远程对象     System.out.println("1");     Product c1 = (Product)Naming.lookup(url + "toaster");     Product c2 = (Product)Naming.lookup(url + "microwave");     file://调用远程方法     System.out.println("2");     System.out.println(c1.getDescription());     System.out.println("3");     System.out.println(c2.getDescription());    }catch (Exception ex)    {     System.out.println("error "+ex);    }   } }

在这段代码中,首先定义了一个字符串url。这个字符串中存储了找到远程服务器对象的协议和地址信息。在rmi中,所使用的协议是rmi,端口号是1099。这个例子中,我的服务器对象存放在ip地址为91.1.1.119的主机上,所以,这个字符串的值为rmi://91.1.1.119:1099/。

接着,使用Naming.lookup()方法查找远程对象。参数就是服务器的位置信息和服务器对象所绑定的名称。

这里需要注意的是,通过lookup方法得到其实不是服务器对象本身的引用,而是下载到客户机上的客户桩。但是,这个方法得到的是Object类型,要使用这个对象,必须将它类型转换成服务器所实现的接口类型。

随后,就可以像调用本地方法一样调用远程方法。在这个例子中,远程方法是getDescription()。

因为这段代码是对远程对象进行操作,所以,它被放到一个try…catch块中,来捕获远程调用过程中的异常。

用RMI进行远程方法调用(3)

时间:2010-12-18

最后,就要将服务器和客户机部署到机器上。

1,将所有的类文件编译为class文件。然后在dos方式下使用

rmic ProductImpl

就可以生成客户桩,名为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的缺省端口109

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号