简单理解RMI - 编程入门网
server = (IServer)Naming.lookup( " //localhost/MyServer " );
12 System.out.println( " 查找远程对象成功。 " );
13 } catch (Exception e) {
14 System.out.println( " 查找远程对象失败: " );
15 System.out.println(e.getMessage());
16 System.exit( 0 );
17 }
18
19 try {
20 server.doSomeThing();
21 System.out.println( " 调用doSomeThing()成功。 " );
22 } catch (Exception e) {
23 System.out.println( " 调用doSomeThing()失败: " );
24 System.out.println(e.getMessage());
25 System.exit( 0 );
26 }
27 }
28 }
29
简单理解RMI(3)时间:2011-04-13 海边沫沫可以看到,我们的客户端程序只用到了 IServer 接口,而不需要 ServerImp 类,它只通 过 java.rmi.Naming.lookup() 来查找远程对象的引用。 下面,我们就可以开始测试我们的程序了。先编译以上程序,然后: 第一步,要先启动 Rmi 注册表,如下: 第二步,使用 rmic 对 ServerImp.class 进行编译,生成代理类 ServerImp_Stub.class ,如下: 简单理解RMI(4)时间:2011-04-13 海边沫沫第三步,启动服务器端程序,如下: 第四步,启动客户端程序,我们多调用几次,如下: 这个时候,我们再看看服务器端是什么反应: 可以看到,服务器端的方法被调用,在服务器端的控制台上打印出了这样几行消息。 下面,我们使用一个简单的图表来表示客户机、服务器和 RMI 注册表之间的关系,绿色 的数字代表顺序: 简单理解RMI(5)时间:2011-04-13 海边沫沫二、参数传递 前面的例子没有涉及到参数的传递。如果我们需要向远程方法传递参数,或者要从远程方 法接受返回值,是不是有什么特殊的约定呢?不错,如果我们要在客户机和服务器之间传递 参数,则该对象要么是实现Serializable接口的对象,要么是扩展自UnicastRemoteObject的 对象,这两种对象是有差别的。 如果参数是实现Serializable接口的对象,则该对象是按值传递的,也就是把这整个对象 传递到远程方法中。请看下面的例子,我们定义了一个ISerializableWorker接口,扩展自 Serializable接口,客户端创建一个SerializableWorkerImp对象wk,并把它传递到服务器端 ,服务器端调用wk.work()方法,这个方法在服务器端执行,这就说明了我们成功把这个对象 传递到了服务器端。服务器端返回的String对象,也可以成功传递到客户端。
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |