[英]Java RMI : how InitialContext.lookup() works
在分布式客户端服务器应用程序中,我使用 java RMI 从客户端机器调用服务器端方法。 在服务器端使用 EJB,应用服务器是 Glassfish。 我在服务器端有一个 SampleFacade 类,它是一个 java 会话 bean,而 SampleFacadeRemote 是一个暴露给客户端的远程接口(@Remote 已与它一起使用)。 SampleFacade
实现SampleFacadeRemote
接口。
请查看以下代码片段:
private static SampleFacadeRemote lookupSampleFacade()
{
Context c = new InitialContext();
return (SampleFacadeRemote)c.lookup("java:comp/env/SampleFacade");
}
catch (NamingException ne)
{
throw new RuntimeException(ne);
}
到这里,有了返回的对象,远程方法就可以成功执行了。
我很想知道它是如何工作的。 查找方法是否将SampleFacade
对象返回给客户端以执行其方法? 但是SampleFacade
的方法假设在服务器端/远程 JVM 上运行。 那么lookup()
方法返回的是什么类型的对象呢? 请解释底层机制。
它返回一个存根:一个实现相同远程接口并知道如何与实际远程对象通信的客户端对象。
事实上,您应该注意到,执行这种魔法的并不是lookup()
方法:最终是远程对象本身将自己转换为它的存根。 存根已经在 Registry 或 LDAP 或您正在查找的任何内容中,而lookup()
只会为您提供找到的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.