你可以在应用服务器的控制台上看看,你的几个EJB是不是都成功发布了
另外你的getInitialContext是不是写对了,包括url,用户名,密码,以及Factory类

解决方案 »

  1.   

    我看了,都已经发布了,而且这个getInitialContext是直接从客户端调用session bean的那段考过来的,参数正确...我继续等...
      

  2.   

    javax.ejb.CreateException: 
    Start server side stack trace:
    javax.ejb.CreateException: 
    at roster.RosterBean.ejbCreate(RosterBean.java:416)
    at roster.RosterBean_ug9zrp_Impl.ejbCreate(RosterBean_ug9zrp_Impl.java:117)
    at java.lang.reflect.Method.invoke(Native Method)
    at weblogic.ejb20.manager.StatefulSessionManager.create(StatefulSessionManager.java:747)
    at weblogic.ejb20.manager.StatefulSessionManager.remoteCreate(StatefulSessionManager.java:799)
    at weblogic.ejb20.internal.StatefulEJBHome.create(StatefulEJBHome.java:159)
    at roster.RosterBean_ug9zrp_HomeImpl.create(RosterBean_ug9zrp_HomeImpl.java:97)
    at roster.RosterBean_ug9zrp_HomeImpl_WLSkel.invoke(Unknown Source)
    at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:362)
    at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:114)
    at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:313)
    at weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManager.java:785)
    at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:308)
    at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:153)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:134)
    End  server side stack trace
      

  3.   

    在部署文件中是否申明BEAN引用了?
    <ejb-local-ref>
            <ejb-ref-name>ejb/local/Adress</ejb-ref-name>
            <ejb-ref-type>Entity</ejb-ref-type>
            <local-home>common.AdressLocalHome</local-home>
            <local>common.AdressLocal</local>
            <ejb-link>Adress</ejb-link>
     </ejb-local-ref>
      

  4.   

    给你一个建议:象这种引用多关系比较紧密的bean最好用UML生成模板一切搞定,就不需要拘泥在这些问题上
      

  5.   

    这是我写的一个JSP页面,用来得到系统中注册的JNDI名字,在JBoss下可以,在WebLogic下我没试过。你试试~~
    <%@ page contentType="text/html; charset=UTF-8" %>
    <%@page import="java.sql.*,javax.sql.DataSource,javax.naming.*"%>
    <%!
    public String getNamespace(Context init,String name,String className,StringBuffer buffer,int spaceCount) throws NamingException
    {
      NamingEnumeration iter = null;
      String space = "";
      for(int i=1;i<spaceCount;i++)
      {
        space += "\t";
      }
      if(init == null)
      {
        init = new InitialContext();
      }
      if(name == null)
      {
        name = init.getNameInNamespace();
      }
      if(buffer == null)
      {
        buffer = new StringBuffer();
      }
      buffer.append("\n\t" + space + name );
      try
      {
        iter = init.list(name);
      }
      catch(NamingException ex)
      {
        buffer.append("\t----" + className);
        ex.printStackTrace();
        return buffer.toString();
      }
      name += "/";
      while(iter!= null && iter.hasMore())
      {
        Object object = iter.next();
        className = object.toString();
        String subName = name + className.substring(0,className.indexOf(":"));
        //System.out.println(subName);// + object);
        //buffer.append(space + " " + object + "\n");
        getNamespace(init,subName,className,buffer,spaceCount + 1);
      }
      return buffer.toString();
    }
    %>
    <%
    String name = request.getParameter("name");
    %>
    <pre>
    <%=getNamespace(null,name,null,null,0)%>
    </pre>
    <form>
    查询:<input name="name" type="text" value="<%=(name==null)?"":name%>">
    </form>
      

  6.   

    我看了,都已经发布了,而且这个getInitialContext是直接从客户端调用session bean的那段考过来的,参数正确...我继续等...从你这段话,我感觉有点不对劲
    如果你的session Bean与实体Bean在同一容器的话,它用的初始上下文对象应该你用的那个不同的
      

  7.   

    把你的部署文件让我看一下 我估计是部署文件出问题了 如果你用weblogic的话 把ejb-jar.xml和weblogic-ejb-jar.xml 让偶看一看 说不定能解决这个问题呢
      

  8.   

    javax.ejb.CreateException: 这好像并不是JNDI 找不到的错误啊,??????????
      

  9.   

    不是,我是create中,找实体bean,奇怪,我刚才从该了localRef就好了,可不知怎么回事,又不行了...
      

  10.   

    当我把lookupLocalPlayer写成
        private LocalPlayerHome lookupPlayer() throws NamingException,Exception {        Context initial = getInitialContext();
            try{
              Object objref = initial.lookup("Player");
            }catch(Exception e){System.out.print("xxx");e.printStackTrace();System.out.print("xxxx");}
            return null;//return (LocalPlayerHome) objref;
       }
    这里捕捉了一次异常,那边的异常就不抛出了,这是个什么道理??