2011-01-19 80 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。