2011-01-19 78 views
5

我遇到了一些问题和Tomcat 7的配置JDBC池:i`ve试图以此为榜样:http://www.tomcatexpert.com/blog/2010/04/01/configuring-jdbc-pool-high-concurrency配置JDBC池(Tomcat的7)

,所以我有:

的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
<Context> <ResourceLink type="javax.sql.DataSource" name="jdbc/LocalDB" global="jdbc/DB"/> 

替换name="jdbc/LocalDB"name="jdbc/DB"在你的context.xml 和

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

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

1

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

你有tomcat里面的安装前缀吗?在eclipse上我有我的上下文里面的WebContent/META-INF和服务器项目中的server.xml;在最终的战争context.xml里面得到正确的META-INF

最后,我拥有一切像你的配置,除了我不知道你在哪里放置context.xml。

另外,我作出@Henry建议过,但也有一些运气你的问题是context.xml的只是位置

2

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

和使用(数据源)envContext.lookup(的 “java:/ comp/env的/ JDBC /的LocalDB”),而不是数据源 )在你的程序中envContext.lookup(“java:/ comp/env/jdbc/DB”),那么你将得到DBConnectoin。