技术开发 频道

RMI应用实战篇:远程信息查询

   1.2.8  将Server目录中存根类和远程接口定义类拷贝到Client目录

   1.2.9  定义客户端程序入口,检索远程对象并执行其接口
public PersonalClient(String __name) throws RemoteException, MalformedURLException, NotBoundException { String urlPrefix = "rmi://192.168.1.147:1099/"; //Look up the remote object by URL Personal p = (Personal)Naming.lookup(urlPrefix + "Personal.Information.Server"); //Invoke the remote interface Properties props = p.getPersonal(__name); …… //Print the result set showPersonal(props); }

   请注意异常处理,至少需要抛出3种异常错误。

   1.3  过程说明

   实践中,远程接口定义的返回值为Properties,很显然,在不同的Java虚拟机甚至是不同的主机,Properties变量是无法通过内存地址来实现共享的。但是Properties是可序列化对象(见下图2),通过序列化机制可以实现服务器端到客户端的对象拷贝,在客户端构造一个与服务器端相同的Properties对象提供客户端使用。

 

   读者可以思考,如果远程接口定义的返回值的类型不是这么简单,而是例如DataSouce对象,Connection对象或者ResultSet对象时,RMI还能运行得如此正常吗?带着这个问题,我们将踏上迷茫而又有趣的RMI与JDBC的组合应用之旅。

0
相关文章