1.本人当前使用的Tomcat版本为:6.0.20,oracle为稳定的ora10g版本
2.下文为方便起见,依习惯以%Tomcat_Home%表示Tomcat安装的目录,本人安装目录为“D:\Program Files\tomcat6”
配置步骤如下:
1.Tomcat 6的配置和以前的不同,不推荐在server.xml中进行配置,
而是在%Tomcat_Home%\webapps\your_App\META-INF \context.xml中进行配置才是更好的方法。
而不是以前版本%Tomcat_Home%\conf下的context.xml文件。这样就可以在不同的web应用下单独配置连接池了,
且Tomcat会自动重载。当然你也可以更改%Tomcat_Home%\conf下的context.xml文件,将所有web应用下的连接池进行统一配置。
TomCat6.0数据库连接池配置有几种方式,在这里我介绍一种常用的方法供大家参考:
配置过程分成三个步骤来完成:
(例如:tomcat6\conf\context.xml或者webapps\your_App\META-INF \context.xml)然后打开context.xml,
在标签<context></<context>之间加入如下内容:
<Resource
name="jdbc/oracleds"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:ora10g"
username="admin"
password="admin"
maxIdle="5"
maxWait="5000"
maxActive="10"
removeAbandoned="true"/>
参数说明:
name: 数据源名称,最好起一个有意义的名称
type: 默认
driveClassName:JDBC驱动类的完整的名称;
maxActive:同时能够从连接池中被分配的可用实例的最大数;
maxIdle:可以同时闲置在连接池中的连接的最大数;
minIdle: 连接池中最少空闲maxIdle个连接
initialSize: 初始化连接数目
maxWait:最大超时时间,以毫秒计;
password:登陆数据库的密码;
url:到JDBC的URL连接;例如:url="jdbc:oracle:thin:@localhost:1521:ora10g" <其中url="jdbc:oracle:thin:@"是固定的,如果访问oracle数据库不在本机上应该将localhost改为oracle数据库所在机子的IP地址,zygora是我的oracle数据库的SID>
username:登陆数据库的用户名;
validationQuery:用来查询池中空闲的连接。
removeAbandoned : true,false,是否自动回收removeAbandonedTimeout秒没有使用的活动连接,清理后并没有放回连接池
auth :为验证方式
removeAbandonedTimeout:活动连接的最大空闲时间
logAbandoned: true,false,连接池收回空闲的活动连接时是否打印消息
acquireRetryAttempts:获取连接失败后,重新尝试的次数
acquireRetryDelay: 尝试连接间隔时间,毫秒
附:MYSql driverClassName : driverClassName="com.mysql.jdbc.Driver"
2.配置 \webapps\your_App\WEB-INF的web.xml中 <web-app>和 </web-app>之间加入:
<resource-ref>
<description>Database Source</description>
<res-ref-name>jdbc/NRMS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<description>:被引用资源的描述;
<res-ref-name>:资源名称;(name="jdbc/oracleds")
<res-type>: 对应type="javax.sql.DataSource"
<res-auth>: 对应auth=Container
第二步:拷贝到TomCat6.0目录下的lib目录里。
将D:\oracle\product\10.2.0\db_1\jdbc\lib中classes12.jar、ojdbc14.jar 拷贝tomcat6\lib 下
第三步:程序中需要数据库连接的地方,只需要编写如下代码:
import javax.sql.DataSource;
import javax.naming.*;
public class GetConnectionTest
{
public static void main(String[] args)
{
try {
Context ctx = new InitialContext();
DataSource ds = (DataSource)context.lookup("java:/comp/env/jdbc/oracleds");
/*
DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/oracleds");
*/
Connection conn = ds.getConnection();
} catch (Exception e) {
e.printStackTrace();
}
}
}
参考:
a. 如果设为true则tomcat自动检查恢复重新利用,没有正常关闭的Connection.(默认是false)
<parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter>
b. 设定连接在多少秒内被认为是放弃的连接,即可进行恢复利用。
<parameter>
<name>removeAbandonedTimeout</name>
<value>60</value>
</parameter>
c. 输出回收的日志,可以详细打印出异常从而发现是在那里发生了泄漏
<parameter>
<name>logAbandoned</name>
<value>true</value>
</parameter>