javax.naming.NameNotFoundException:名称[jdbc / eswastha]未绑定在此Context中。找不到[jdbc]

时间:2012-10-17 06:00:04

标签: java tomcat7 jndi

我将首先描述环境

环境Netbeans 7.2 and Tomcat 7.0.27.0 is configured with Netbeans ID

当我单独构建构建并将其放入webapps文件夹并运行时没有问题但是当我在IDE中运行应用程序时,我得到javax.naming.NameNotFoundException: Name [jdbc/eswastha] is not bound in this Context. Unable to find [jdbc].此异常。

CONF / context.xml中

<Resource name="jdbc/eswastha" auth="Container" type="javax.sql.DataSource"
               maxActive="100" maxIdle="30" maxWait="10000"
               url="jdbc:mysql://localhost:3306/eswastha"
               driverClassName="com.mysql.jdbc.Driver"
               username="root" password="r14@17*" />

和web.xml

<resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jjdbc/eswastha</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>  

和java类:

import java.sql.Connection;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class JDBCManager {

    public Connection mysqlConnection()  {
        Connection dbConnection = null;
        try {

            Context initContext = new InitialContext();
            Context envContext  = (Context)initContext.lookup("java:/comp/env");
            DataSource ds = (DataSource)envContext.lookup("jdbc/eswastha");
            dbConnection = ds.getConnection();

        } catch (Exception e) {
            e.printStackTrace();
        }
        return dbConnection;

    }
}

请帮我确定问题。

此致

2 个答案:

答案 0 :(得分:1)

它丢失了吗? 检查

 <res-ref-name>jjdbc/eswastha</res-ref-name>
 and
 <Resource name="jdbc/eswastha"..../>

根据您的评论: 无法创建类的&#39;&#39;用于连接网址&#39; null&#39;


确保JDBC Driver下的tomcat-home/lib和复制驱动程序jar文件。

这将是您的参考。 here

答案 1 :(得分:1)

您可能希望尝试以完整的JNDI名称访问数据源,例如:&#34; java:comp / env / jdbc / test&#34; 资料来源:http://www.coderanch.com/t/442367/Tomcat/jdbc-bound-Context

第二点,我注意到你在web.xml中定义了 jjdbc ,而不是 jdbc

<res-ref-name>jjdbc/eswastha</res-ref-name>