配置jdbc-pool(tomcat 7)

时间:2011-01-19 19:41:40

标签: tomcat7

我在使用tomcat 7配置jdbc-pool时遇到了一些问题:我试过这个例子:http://www.tomcatexpert.com/blog/2010/04/01/configuring-jdbc-pool-high-concurrency

所以我有:

CONF / server.xml中

 <GlobalNamingResources>
  <Resource type="javax.sql.DataSource"
            name="jdbc/DB"
            factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
            driverClassName="com.mysql.jdbc.Driver"
            url="jdbc:mysql://localhost:3306/mydb"
            username="user"
            password="password"
/>
 </GlobalNamingResources>

CONF / context.xml中

<Context>
  <ResourceLink type="javax.sql.DataSource"
                name="jdbc/LocalDB"
                global="jdbc/DB"
/>
 <Context>

当我尝试这样做时:

Context initContext = new InitialContext();
Context envContext  = (Context)initContext.lookup("java:/comp/env");
DataSource datasource = (DataSource)envContext.lookup("jdbc/LocalDB");
Connection con = datasource.getConnection();

我一直收到这个错误:

javax.naming.NameNotFoundException: Name jdbc is not bound in this Context
 at org.apache.naming.NamingContext.lookup(NamingContext.java:803)
 at org.apache.naming.NamingContext.lookup(NamingContext.java:159)

请帮助 TNX

3 个答案:

答案 0 :(得分:3)

<Context>  <ResourceLink type="javax.sql.DataSource"  name="jdbc/LocalDB" global="jdbc/DB"/>

在context.xml中用name="jdbc/LocalDB"替换name="jdbc/DB"

(DataSource)envContext.lookup("java:/comp/env/jdbc/DB");

[第二行代码是多余的]。

答案 1 :(得分:2)

更改server.xml中的以下行 使用type =“org.apache.tomcat.jdbc.pool.DataSource”而不是type =“javax.sql.DataSource”

并使用(DataSource)envContext.lookup(“java:/ comp / env / jdbc / LocalDB”)代替 DataSource)envContext.lookup(“java:/ comp / env / jdbc / DB”)在您的程序中,然后您将获得DBConnectoin。

答案 2 :(得分:1)

conf / server.xml和conf / context.xml ...

你在tomcat安装前缀里面有吗?在eclipse上,我在WebContent / META-INF中有我的上下文,在Server项目中有server.xml;在生成的war context.xml上有正确的META-INF

最后,除了我不知道你在哪里放置context.xml之外,我还有你的配置。

另外,我也是@Henry建议的,但幸运的是你的问题只是context.xml的位置