Context ic = new InitialContext();
Object o = ic.lookup("EJB");
AdviceHome home = (AdviceHome) PortableRemoteObject.narrow(o, AdviceHome.class);
以上是使用 Narrow Cast 的代码。在我的书中,他们解释说使用窄转换来假设服务器正在使用 IIOP(尽管服务器实际上只是使用 RMI)。
这本书仍然说:
客户端代码不会独立于供应商!换句话说,如果你不使用narrow,你将不会有一个可移植的应用程序,因为在使用IIOP 的服务器上重新部署bean 会破坏客户端
我有两点不明白:
1) IIOP 协议比普通的奇数 RMI 协议大:所以,我们已经将一个小对象转换为大对象,对吧?
2)我真的不明白为什么客户端代码会破坏这么多。为什么在这种情况下使用 IIOP 的服务器会破坏客户端的代码?因为客户端只是调用了一些在 EJBObject 接口中定义的方法。而且我无法想象客户端代码将如何依赖于服务器使用的协议。
请用清晰的解释和简单的例子帮助我。
谢谢 :)