PortableRemoteObject.narrow方法的目的就是CORBA协作,在EJB以前有类似的一个CORBA来进行操作的,虽然本身CORBA比较的强大,但是非常难于使用,在EJB中为了添加对CORBA的支持,所以在使用home接口以前需要用PortableRemoteObject.narrow方法处理一下
我来说说我的看法
远程lookup一个对象的时候,返回的对象的引用并不明确。我们只知道它是一个Object,而不清楚是否是我们所需要的特定的类的对象(这里就是EjbHome)。所以用narrow方法,把lookup到的对象和EjbHome.class作为参数传进去,检查是否匹配,然后再转换成我们需要的类型。
而本地lookup一个对象的时候就有所不同,因为本地的对象是已经在本地JVM中存在的,注册过的Class的对象,所以已经知道lookup到的对象是什么类的引用,因此,就不必用narrow方法检查,而可以直接转型。
这是我的个人想法,不保证正确,欢迎大家继续探讨。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
<