如果是这样
<jndi-name>java:comp/env/ejb/myEJBHome<jndi-name>
或者<jndi-name>ejb/myEJBHome<jndi-name>
或者<jndi-name>ejb.myEJBHome<jndi-name>
在lookup时,用lookup("ejb/myEJBHome"),应该没有问题的。

解决方案 »

  1.   

    <jndi-name>java:comp/env/ejb/myEJBHome<jndi-name>Context env = (Context) ctx.lookup("java:comp/env");
    env.lookup("ejb/myEJBHome");概念是每个Application Server 都有自己的JNDI 根.当年查看了所有的JNDI 时就明白了.
      

  2.   

    那就是说,每一个应用的根,都是"java:comp/env/"?
      

  3.   

    对,但在定义的时候不需加,只是访问的时候必须提供全名,如下:
    定义时(本地访问,远程访问类似):
                <ejb-local-ref>
                    <description />
                    <ejb-ref-name>ejb/User</ejb-ref-name>
                    <ejb-ref-type>Entity</ejb-ref-type>
                    <local-home>userapp.UserHome</local-home>
                    <local>userapp.User</local>
                    <ejb-link>User</ejb-link>
                </ejb-local-ref>访问时:
         Context initial = new InitialContext();
         return (UserInfoHome)
         initial.lookup("java:comp/env/ejb/UserInfo");
      

  4.   

    Context env =.....;
    env.lookup(".....");的时候,lookup()里面好像可以直接写jndi-name
    InitialContext env=...;
    env.lookup(".....");的时候,lookup()里面好像要写java:comp/env/
    部署文件里面没有必要写java:comp/env/