首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

怎么用TOMCAT 的数据库连接池

2012-01-02 
如何用TOMCAT 的数据库连接池如何用TOMCAT的数据库连接池[解决办法]今天终于把Tomcat的数据库连接池问题搞

如何用TOMCAT 的数据库连接池
如何用TOMCAT   的数据库连接池

[解决办法]
今天终于把Tomcat的数据库连接池问题搞定了。我这个美国的同类真是的,每次版本变化,配置文件都要变。网络上多是讲5.0的,5.5的有所更改,我参照网上一位朋友的说明,修改了一下,终于配置成功。唉,谁叫咱英文功底不足呢。
  我用的数据库是MySQL5.0,所以首先要把MySQL的JDBC驱动程序拷贝到Tomcat安装目录的/common/lib下和你自己网站的/WEB-INF/lib下。
  Server.xml的修改我推荐使用Tomcat的Admin组件完成,完全图形化配置,相当容易。或者按下面的写法在 <GlobalNamingResources> </GlobalNamingResources> 之间写如下配置(仅供参考,各位用的时候,请改成自己数据库的配置):
<Resource
name= "jdbc/mysql "
type= "javax.sql.DataSource "
password= "****** "
driverClassName= "org.gjt.mm.mysql.Driver "
maxIdle= "2 "
maxWait= "5000 "
username= "root "
url= "jdbc:mysql://127.0.0.1/test "
maxActive= "4 "/>
  然后,在Tomcat安装目录下/conf/Catalina/localhost文件夹中建立一个和你网站文件夹名字一样的XML文件。例如:TestSourse.xml。内容如下:
<?xml version= "1.0 " encoding= "UTF-8 "?>
<Context>
<Resource
name= "jdbc/mysql "
type= "javax.sql.DataSource "
password= "****** "
driverClassName= "org.gjt.mm.mysql.Driver "
maxIdle= "2 "
maxWait= "5000 "
username= "root "
url= "jdbc:mysql://127.0.0.1/test "
maxActive= "4 "/>
</Context>
  其实就是把Server.xml的内容再重复一遍。这一步非常重要,如果没有这步就会出错,会出现org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class ' '
for connect URL 'null '错误。
最后,在你自己网站的/WEB-INF/web.xml文件中,添加一下代码(参考):
<resource-ref>
<description> DB Connection </description>
<res-ref-name> jdbc/mysql </res-ref-name>
<res-type> javax.sql.DataSource </res-type>
<res-auth> Container </res-auth>
</resource-ref>
  OK。配置全部完成。现在你可以写代码测试这个数据库连接池了。如:
DataSource ds = null;
InitialContext ctx=new InitialContext();
ds=(DataSource)ctx.lookup( "java:comp/env/jdbc/mysql ");
Connection conn = ds.getConnection();
  数据库连接对象得到了。
[解决办法]
首先修改tomcat的安装目录conf\server.xml:
<Host ...>
<Context ...>
<Resource name= "jdbc/pm2006 " auth= "Container " type= "javax.sql.DataSource "/>
<ResourceParams name= "jdbc/pm2006 ">
<parameter>
<name> factory </name>
<value> org.apache.commons.dbcp.BasicDataSourceFactory </value>
</parameter>
<parameter>
<name> driverClassName </name>
<value> oracle.jdbc.driver.OracleDriver </value>
</parameter>
<parameter>
<name> url </name>
<value> jdbc:oracle:thin:@10.3.0.1:1521:orcl </value>
</parameter>
<parameter>
<name> username </name>
<value> ... </value>
</parameter>
<parameter>
<name> password </name>
<value> ... </value>
</parameter>
<parameter>
<name> maxActive </name>
<value> 40 </value>


</parameter>
<parameter>
<name> maxIdle </name>
<value> 10 </value>
</parameter>
<parameter>
<name> maxWait </name>
<value> -1 </value>
</parameter>
</ResourceParams>
<Logger className= "org.apache.catalina.logger.FileLogger "
directory= "logs " prefix= "pm2006_log. " suffix= ".txt "
timestamp= "true "/>

</Context>
</Host>
然后可以得到连接
public static Connection getConnection() {
Connection conn = null;
try {

Context initCtx = new InitialContext();
/*
利用java:comp/env/获得应用服务器所创建的一个JNDI上下文环境(Context对象),然后再通过该Context查找获得DataSource对象
*/
Context envCtx = (Context) initCtx.lookup( "java:comp/env ");
DataSource ds = (DataSource) envCtx.lookup( "jdbc/pm2006 ");
conn = ds.getConnection();
conn.setAutoCommit(false);
return conn;
} catch (NamingException e) {
appLogger.error( "不能正确连接数据库! " + e.getMessage());
close(null, null, conn);
} catch (SQLException e) {
appLogger.error( "不能正确连接数据库! " + e.getMessage());
close(null, null, conn);
}
return conn;
}

[解决办法]
en
5.5和5.0配法不同
tomcat5.5.x+sqlserver2000数据库连接池配置
tomcat5.5x与以前版本的连接池配置已经不同,经过本人测试,总结如下:
首先你不要忘记装jdbc from mssql,本篇为tomcat5.5x下配置mssql2k的连接池
注:本案例环境:windows2003 sp1 + tomcat5.5.17 + mssql sp4 + jdk1.5

测试成功:

方案一

1、在tomcat\conf\server.xml的GlobalNamingResources中增加

<Resource
name= "jdbc/myWeb "
type= "javax.sql.DataSource "
password= "pw "
driverClassName= "com.microsoft.jdbc.sqlserver.SQLServerDriver "
maxIdle= "2 "
maxWait= "5000 "
validationQuery= "select 1 "
username= "sa "
url= "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=DBname "
maxActive= "4 "/>

2、在tomcat\conf\context.xml的Context中增加:
<ResourceLink
global= "jdbc/myWeb "
name= "jdbc/myWeb "
type= "javax.sql.DataSource "/>


方案二

1、同主案一之1

2、tomcat\webapps\myapp\META-INF\context.xml的Context中增加:

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

如果没有context.xml文件,就自己建一个,内容为:

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

方案三

只需在tomcat\webapps\myapp\META-INF\context.xml的Context中增加:

<Resource
name= "jdbc/ExtLearning "
type= "javax.sql.DataSource "
password= "pw "
driverClassName= "com.microsoft.jdbc.sqlserver.SQLServerDriver "
maxIdle= "2 "
maxWait= "5000 "
validationQuery= "select 1 "
username= "sa "
url= "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=DBname "


maxActive= "4 "/>

即可,如果没有context.xml,就新建一个,内容如下:

<Context>
<Resource
name= "jdbc/ExtLearning "
type= "javax.sql.DataSource "
password= "pw "
driverClassName= "com.microsoft.jdbc.sqlserver.SQLServerDriver "
maxIdle= "2 "
maxWait= "5000 "
validationQuery= "select 1 "
username= "sa "
url= "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=DBname "
maxActive= "4 "/>
</Context>

---------------------------------

以下为5.0配置连接池的方案,只改server.xml就可以,没用配置web.xml亦能运行
<Context path= "/myWeb " docBase = "myWeb " debug= "0 " reloadable = "true " crossContext= "true ">
<Resource name = "jdbc/test " auth= "Container " type= "javax.sql.DataSource "/>
<ResourceParams name = "jdbc/test ">
<parameter>
<name> factory </name>
<value> org.apache.commons.dbcp.BasicDataSourceFactory </value>
</parameter>
<parameter>
<name> driverClassName </name>
<value> com.microsoft.jdbc.sqlserver.SQLServerDriver </value>
</parameter>
<parameter>
<name> url </name>
<value> jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=pubs </value>
</parameter>
<parameter>
<name> username </name>
<value> sa </value>
</parameter>
<parameter>
<name> password </name>
<value> sa </value>
</parameter>
<parameter>
<name> maxActive </name>
<value> 20 </value>
</parameter>
<parameter>
<name> maxIdle </name>
<value> 10 </value>
</parameter>
<parameter>
<name> maxWait </name>
<value> -1 </value>
</parameter>
</ResourceParams>
</Context>

Write by no_mIss

热点排行