你的问题每次咋都这么字 :)
java:comp/env/ejb/Employee是你的BEAN的JNDI名
CLIENT通过它来早到BEAN,如果你用的是WL和JB6,并DEPLY成功了
你只需要写:Employee就可以了,前面不需要你把你的ENTITYBENA的JAR放到WL的启动CLASSPATH中,这样就可以被CLIEN调用到了

解决方案 »

  1.   

    1、异常处理就是try{}catch(){},你问什么?它这里throw了EJBException,说明有异常发生会终止EJB的运行。2、lookup()方法根据JNDI名寻找对象,这里的java:comp/env是J2EE的默认名字空间,然后你在配置时设置了ejb/Employee的JNDI名字,它会根据这个名字寻找对象。3、narrow()方法就是“强制类型转换”的意思。把object转成EmployeeHome对象类型。4、employeeHome是对象名,是EmployeeHome类的一个实例。而EmployeeHome是类的名字。
      

  2.   

    我自己是这样写的:
    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的。谢谢。
      

  3.   

    java:comp/env/ejb/Employee是ejb引用名称,你需要在ejb-jar.xml中声明ejb/Employee这个ejb引用,在发布时,你还要指定ejb/Employee对应的ejb的jndi.  
    由于ejb是基于rmi-iiop的分布式组件,employeeHome = (EmployeeHome) PortableRemoteObject.narrow(object,EmployeeHome.class);中narrow检查远程对象object是否实现远程接口,然后可以安全的进行转换
    lookup查找ejb时实际上返回该ejb的home接口,然后通过home接口得到ejb的remote接口