No JNDI name found for EJB referenced using this name: "ejb/AutoDealerHome".

解决方案 »

  1.   

    描述文件应该指明:
    1 name for ejb ( my name is ...)
    2 name for reference (the name of the ejb i want to use is ...)(i am an ejb:-) )
      

  2.   

    看我的描述文件:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE weblogic-ejb-jar PUBLIC '-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN' 'http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd'>
    <weblogic-ejb-jar>
        <weblogic-enterprise-bean>
            <ejb-name>AutoBuyer</ejb-name>
            <reference-descriptor>
               <ejb-reference-description>
                 <ejb-ref-name>ejb/AutoDealerHome</ejb-ref-name>
                 <jndi-name>AutoDealer</jndi-name>
               </ejb-reference-description>
            </reference-descriptor>
            <jndi-name>AutoBuyer</jndi-name>
        </weblogic-enterprise-bean>
        <weblogic-enterprise-bean>
            <ejb-name>AutoDealer</ejb-name>
            <reference-descriptor>
              <resource-description>
               <res-ref-name>jdbc/DBPool</res-ref-name>
               <jndi-name>SQLDataSource</jndi-name>
              </resource-description>
            </reference-descriptor>
            <jndi-name>AutoDealer</jndi-name>
        </weblogic-enterprise-bean>
    </weblogic-ejb-jar>另外一个:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
    <ejb-jar>
        <enterprise-beans>
            <session>
                <display-name>AutoBuyer</display-name>
                <ejb-name>AutoBuyer</ejb-name>
                <home>sessionstateless.AutoBuyerHome</home>
                <remote>sessionstateless.AutoBuyer</remote>
                <ejb-class>sessionstateless.AutoBuyerBean</ejb-class>
                <session-type>Stateful</session-type>
                <transaction-type>Container</transaction-type>
                <ejb-ref>
                <ejb-ref-name>ejb/AutoDealerHome</ejb-ref-name>
        <ejb-ref-type>Session</ejb-ref-type>
                <home>sessionstateless.AutoDealerHome</home>
                <remote>sessionstateless.AutoDealer</remote>
          </ejb-ref>
            </session>
            <session>
                <display-name>AutoDealer</display-name>
                <ejb-name>AutoDealer</ejb-name>
                <home>sessionstateless.AutoDealerHome</home>
                <remote>sessionstateless.AutoDealer</remote>
                <ejb-class>sessionstateless.AutoDealerBean</ejb-class>
                <session-type>Stateless</session-type>
                <transaction-type>Container</transaction-type>
                <env-entry>
                <env-entry-name>TableName</env-entry-name>
                <env-entry-type>java.lang.String</env-entry-type>
                <env-entry-value>AutoStock</env-entry-value>
                </env-entry>            <resource-ref>
                <res-ref-name>jdbc/DBPool</res-ref-name>
                <res-type>javax.sql.DataSource</res-type>
                <res-auth>Container</res-auth>
                </resource-ref>
            </session>
        </enterprise-beans>
        <assembly-descriptor>
            <container-transaction>
                <method>
                    <ejb-name>AutoBuyer</ejb-name>
                    <method-name>*</method-name>
                </method>
                <trans-attribute>Required</trans-attribute>
            </container-transaction>
            <container-transaction>
                <method>
                    <ejb-name>AutoDealer</ejb-name>
                    <method-name>*</method-name>
                </method>
                <trans-attribute>Required</trans-attribute>
            </container-transaction>
            <container-transaction>
                <method>
                    <ejb-name>AutoDealer</ejb-name>
                    <method-name>getAvailableCarsInPriceRange</method-name>
                </method>
                <trans-attribute>NotSupported</trans-attribute>
            </container-transaction>
        </assembly-descriptor>
    </ejb-jar>
      

  3.   

    你是怎么写的阿jndi-name应该是AutoDealer
      

  4.   

    你的jndi-name在部署描述项中与LOOKUP中不一样吧。
      

  5.   

    public Connection initial(){
          String user="system"; // 能够登录WebLogic控制台的用户名
          String password="12345678"; //登录密码
          String dataSourceName="frameSources"; // 在WebLogic控制台配置的数据源名称      Hashtable env = new Hashtable();
          env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
          env.put(Context.PROVIDER_URL, "t3://localhost:7001");
          Connection con = null;
          try {
            Context context = new InitialContext(env);
            DataSource dataSource = (DataSource)context.lookup(dataSourceName);
            con = dataSource.getConnection(user,password);
          }catch(SQLException sqle){
            System.out.println("TestJNDI.initial [SQL]:"+sqle.getMessage());
          }catch(Exception ex){
            System.out.println("TestJNDI.initial [Ex]"+ex.getMessage());
          }
          return con;
        }
      

  6.   


    <ejb-ref-name>ejb/AutoDealerHome</ejb-ref-name>
    改为
    <ejb-ref-name>AutoDealerHome</ejb-ref-name>
      

  7.   

    已经解决了,参考资源没有jndi名,我加上了,就可以了,感谢大家的关注