5

我在使用 tomcat 7 配置 jdbc-pool 时遇到了一些问题:我尝试按照以下示例进行操作:http ://www.tomcatexpert.com/blog/2010/04/01/configuring-jdbc-pool-high-并发

所以我有:

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

4

3 回答 3

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");

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

于 2011-01-25T04:43:18.493 回答
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。

于 2012-10-24T04:57:43.597 回答
1

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

你有它里面的tomcat安装前缀吗?在 Eclipse 上,我在 WebContent/META-INF 中有我的上下文,在 Server 项目中有 server.xml;在产生的战争 context.xml 中得到了正确的 META-INF

最后,我拥有与您的配置类似的所有内容,只是我不知道您将 context.xml 放在哪里。

另外,我也按照@Henry 的建议进行了制作,但是幸运的是,您的问题只是 context.xml 的位置

于 2011-07-14T19:19:49.450 回答