查看文章 |
java学习杂谈(六)
2008-07-11 00:26
Naming.lookup(“PersonService”); p.sayHello(); 就这几段代码就包含了几乎所有的实现技术,大家相信么?客户端请求一个say hello服务, 服务器运行时接到这个请求,利用Java反射机制的Class.newInstance()返回一个对象,但客 户端不知道服务器返回的是ImplA还是ImplB,它接受用的参数签名是Person,它知道实现了 Person接口的对象一定有sayHello()方法,这就意味着客户端并不知道服务器真正如何去实现 的,但它通过了解Person接口明确了它要用的服务方法名字叫做sayHello()。 如此类推,服务器只需要暴露自己的接口出来供客户端,所有客户端就可以自己选择需要 的服务。这就像餐馆只要拿出自己的菜单出来让客户选择,就可以在后台厨房一道道的按 需做出来,它怎么做的通常是不让客户知道的!(祖传菜谱吧,^_^) 最后一点是我调用lookup,查找一个叫PersonService名字的对象,服务器只要看到这个名字 ,在自己的目录(相当于电话簿)中找到对应的对象名字提供服务就可以了,这个目录就 叫做JNDI (Java命名与目录接口),相信大家也听过的。 有兴趣的朋友不妨自己做个RMI的应用,很多前辈的博客中有简单的例子。提示一下利用 Jdk的bin目录中rmi.exe和rmiregistry.exe两个命令就可以自己建起一个服务器,提供远程服务 。因为例子很容易找,我就不自己举例子了! 2. JVM沙箱 |