deptHome = (DeptHome) context.lookup("Dept");
试试

解决方案 »

  1.   

    你的代码如下:lookup("java:comp/env/ejb/Dept");
    但是你在配置文件中写的<local-jndi-name>Dept</local-jndi-name>
    因该改成<local-jndi-name>ejb/Dept</local-jndi-name>
      

  2.   

    涂老大,楼上cszhz说的肯定行得通,是通过jndi名查找bean。
    或者向楼上313fxq说,你也可以把代码改成“lookup("java:comp/env/Dept")”。
      

  3.   

    我的也是抛这个错,其实我觉得不用改成lookup("java:comp/env/Dept")”。
    虽然ejb-jar.xml里面没有写成<local-jndi-name>ejb/Dept</local-jndi-name>,但是DeptHome deptHome = null;
       Dept dept = null;
       String url = "t3://192.168.0.153:7001";
       Properties properties = new Properties();
       properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
       properties.put(Context.PROVIDER_URL, url);
       InitialContext context= new InitialContext(properties);
       deptHome = (DeptHome) context.lookup("java:comp/env/ejb/Dept");
       dept = deptHome.create("1111");
       dept.setDeptName("aaaaaa");
    这段已经指定了上下文了,所以应该写成
    lookup("Dept");   有不同意见的吗?weblogic的jndi文档哪里可以找到?
      

  4.   

    如果要deptHome = (DeptHome) context.looku("java:comp/env/ejb/Dept");
    你的部署文件应该是:<jndi-name>ejb.Dept</jndi-name>或者是将LOOKUP()改成lookup("java:comp/env/Dept")
    以上为个人意见
      

  5.   

    看你的weblogic-ejb-jar.xml有这一段吗?<reference-descriptor>
          <resource-description>
    <res-ref-name>ejb/Dept</res-ref-name>
    <jndi-name>ejbPool</jndi-name> 注:ejbPool为你在weblogic里建立的DataSource名
          </resource-description>
        </reference-descriptor>对应的ejb-jar.xml应有
    <resource-ref>
        <res-ref-name>ejb/Dept</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
       </resource-ref>注意两xml文件的<res-ref-name>要相同。