你的问题每次咋都这么字 :)
java:comp/env/ejb/Employee是你的BEAN的JNDI名
CLIENT通过它来早到BEAN,如果你用的是WL和JB6,并DEPLY成功了
你只需要写:Employee就可以了,前面不需要你把你的ENTITYBENA的JAR放到WL的启动CLASSPATH中,这样就可以被CLIEN调用到了
java:comp/env/ejb/Employee是你的BEAN的JNDI名
CLIENT通过它来早到BEAN,如果你用的是WL和JB6,并DEPLY成功了
你只需要写:Employee就可以了,前面不需要你把你的ENTITYBENA的JAR放到WL的启动CLASSPATH中,这样就可以被CLIEN调用到了
EntityBeanProvider bgentityBeanProvider = new EntityBeanProvider();
EntityBeanResolver bgentityBeanResolver = new EntityBeanResolver();
BGEntityBeanHome bgEntityBeanHome;
try {
Context context = new InitialContext();
Object object = context.lookup("java:comp/env/ejb/BG");
bgEntityBeanHome = (BGEntityBeanHome) PortableRemoteObject.narrow(object,BGEntityBeanHome.class);
bgentityBeanProvider.setEjbHome(bgEntityBeanHome) ;
bgentityBeanResolver.setEjbHome(bgEntityBeanHome);
} catch (Exception ex) {
throw new EJBException(ex);
}
编译时老提示:"BGSessionBeanBean.java": Error #: 300 : method setEjbHome(foreigntrade.BGEntityBeanHome) not found in class com.borland.dx.ejb.EntityBeanProvider
但我明明生成了BGEntityBeanHome.java的。谢谢。
由于ejb是基于rmi-iiop的分布式组件,employeeHome = (EmployeeHome) PortableRemoteObject.narrow(object,EmployeeHome.class);中narrow检查远程对象object是否实现远程接口,然后可以安全的进行转换
lookup查找ejb时实际上返回该ejb的home接口,然后通过home接口得到ejb的remote接口