不太明白你的意思,你两次都这样调用getLocalHome("java:/comp/env/xtyhEJB/Yhdjb");第一次能找到,第二次找不到?

解决方案 »

  1.   

    一次都找不到啊,在调用之前有一个同名文件调用了另一个叫EJBController的bean,所以到这时就混在一起了
      

  2.   

    是不是那个不调用,你的就没问题?
    给你的getLocalHome()加上这个关键字试试,synchronized
    或者把你的调用过程贴出来,文件名应该不是问题
      

  3.   

    调用过程就在上面呀,System.out.println("getlocalhomeejb"+jndiHomeName);这句话都是能执行的,并且结果是对的,但到了home = (EJBLocalHome) ic1.lookup(jndiHomeName);就出问题了,
      

  4.   

    天哪,换了一个文件名都不行啊,public EJBLocalHome getLocalHome(String jndiHomeName) throws ServiceLocatorException {
            
          EJBLocalHome home = null;
          try {
              home = (EJBLocalHome) ic1.lookup("java:comp/env/xtyhEJB/Yhdjb");
           } catch (NamingException ne) {
                throw new ServiceLocatorException(ne);
           } catch (Exception e) {
                throw new ServiceLocatorException(e);
           }
           return home;
        }出错的提示还是:
    getlocalhomeejbjava:comp/env/xtyhEJB/Yhdjb
    javax.naming.NameNotFoundException: Unable to resolve 'app/ejb/ejb#EJBController
    /comp/env/xtyhEJB/Yhdjb' Resolved: 'app/ejb/ejb#EJBController/comp/env' Unresolv
    ed:'xtyhEJB' ; remaining name 'xtyhEJB/Yhdjb'
      

  5.   

    你编译可以通过么?     你把WEB服务器清空,重新部署试试.   
      

  6.   

    编译通过呀,我都重新部署NN遍了,但“把WEB服务器清空”是什么意思?
      

  7.   

    context对象出了问题,你查一下部署描述文件,第二次定位那里,你看看,有可能是包名搞错了
      

  8.   

    会不会存在web层和ejb层的context搞混了的情况?
      

  9.   

    你用什么服务器,要是WebLogic的话,搞混的情况不会发生,它们位于不同的路径下,web也不用显式定义context    部署描述文件就是XML文档,它控制着EJB所调用的资源,如果你用JBuilder,可以看看EJB DD Source标签页下的文件,很多错误出在这里,尤其用BMP的时候.    你的程序没有问题,最有可能的情况是:部署描述文件变为只读,新的信息无法写入,我曾经碰到过这样的情况,(程序全改了一遍,最后发现了这个问题)
      

  10.   

    应该是你的Context出错了,你的ic1是怎么得到的?
    试试这样
    Context init = new InitialContext();
    home = (EJBLocalHome) init.lookup("java:comp/env/xtyhEJB/Yhdjb");
      

  11.   

    ic1 = new InitialContext();