配置 jdbc-pool(tomcat 7)

配置 jdbc-pool(tomcat 7)

我在配置 jdbc-pool 时遇到了一些 tomcat 7 问题:我尝试按照这个例子操作: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)

请帮忙,谢谢

答案1

检查您的 context.xml 文件。您是否将其嵌入到现有的默认文件<Context>中?<Context>

最坏的情况是这样的:

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

...并确保它在已经存在的<Context>标签内,并删除多余的标签。

一般来说,我从不建议为了创建这些资源而编辑 server.xml 或 context.xml。Tomcat 文档在某种程度上支持我的观点:

http://tomcat.apache.org/tomcat-7.0-doc/config/context.html

请参阅简介部分的末尾。通常,我会在 /conf/Catalina/localhost 目录中创建 context.xml.default 文件甚至 appname.xml 文件,以达到此目的。从应用程序特定配置中抽象出全局配置。

答案2

通常,为了此目的,我会在 /conf/Catalina/localhost 目录中创建 context.xml.default 文件甚至 appname.xml 文件。

这是正确的方式。

答案3

您可以通过 java:comp/env/jdbc/DB 在一行中进行查找,不需要两次查找。

相关内容