当前位置: 技术问答>java相关
关于两种方法得到HOME接口的问题。
来源: 互联网 发布时间:2015-10-06
本文导语: 有两种方法得到HOME接口,ctx.lookup()和PortableRemoteObject.narrow() 请问这两种方法有什么不同呢? | ejb1.0允许运用java本地强制类型转换,将JNDI API返回的类型转换成home接口类型。 如:CabinHome home=(CabinHome)jnd...
有两种方法得到HOME接口,ctx.lookup()和PortableRemoteObject.narrow()
请问这两种方法有什么不同呢?
请问这两种方法有什么不同呢?
|
ejb1.0允许运用java本地强制类型转换,将JNDI API返回的类型转换成home接口类型。
如:CabinHome home=(CabinHome)jndiContext.lookup("CabinHome");
而在ejb1.1中,要兼容于Java RMI-IIOP,IIOP不是java所独有的,而其它语言又不一定支持强制类型转换,所以在ejb1.1中添加PortableRemoteObject.narrow()方法用于类型转换。就象下面所示:
javax.naming.Context context = new javax.naming.InitialContext();
Object object = context.lookup("java:comp/env/ejb/Employee");
EmployeeHome empHome = (EmployeeHome) javax.rmi.PortableRemoteObject.narrow(object,EmployeeHome.class);
|
lookup方法返回的是object类型的。因为查找的基础RMI-IIOP协议不支持多接口,其中有些不支持继承。因为用narrow将这个一般化的object类型缩小