tomcat下通过JNDI配置数据库连接池按照访问范围分类共有两种,分别是全局数据库连接池和局部数据库连接池。前者是在一个tocmat部署下的应用都能使用该数据库连接池,后者是只有特定的应用才能使用的数据库连接池。tomcat默认的JDBC连接池实现是 apache下的DBCP连接池,我们也可以使用C3P0作为tomcat的数据库连接池,但是需要进行额外的配置,本篇博客只介绍DBCP连接池的两种配置方式。
在进行配置前需要将数据库驱动拷贝到 apache-tomcat-7.0.72\lib 目录中。如果使用C3P0,需要将C3P0相关的jar拷贝到这个目录中。
tomcat下的全局数据库连接池
第一步:在context.xml文件添加Resource节点
在apache-tomcat-7.0.72\conf\context.xml文件中添加Resource节点,内容如下:
<!--
maxIdle 连接池中最多可空闲maxIdle个连接
minIdle 连接池中最少空闲maxIdle个连接
initialSize 初始化连接数目
maxWait 连接池中连接用完时,新的请求等待时间,毫秒
username 数据库用户名
password 数据库密码
-->
<Resource name="jndi/testConnDB"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/jiemian_db"
username="root"
password="123456"
maxActive="20"
maxIdle="10"
maxWait="10000"/>
/>
第二步:在项目中的web.xml添加resource-ref节点
<resource-ref>
<description>JNDI DataSource</description>
<res-ref-name>jndi/testConnDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
注意:res-ref-name元素的内容要第一步的resource元素name属性值一致。
tocmat下的局部数据库连接池方式一
第一步:在 server.xml文件中添加resource节点
在apache-tomcat-7.0.72\conf\server.xml文件找到项目对应的Context元素下添加如下内容:
<Context docBase="jdbc_exam" path="/jdbc_exam" reloadable="true" source="org.eclipse.jst.jee.server:jdbc_exam">
<!--
maxIdle 连接池中最多可空闲maxIdle个连接
minIdle 连接池中最少空闲maxIdle个连接
initialSize 初始化连接数目
maxWait 连接池中连接用完时,新的请求等待时间,毫秒
username 数据库用户名
password 数据库密码
-->
<Resource name="jndi/testConnDB"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/jiemian_db"
username="root"
password="123456"
maxActive="20"
maxIdle="10"
maxWait="10000"/>
</Context>
第二步: 在项目中的web.xml添加resource-ref节点
同上一节第二步
tocmat下的局部数据库连接池方式二(推荐)
第一步:在项目中新建context.xml文件,并添加Resource节点
在项目中的META-INF目录新建context.xml文件,添加如下内容:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<!--
maxIdle 连接池中最多可空闲maxIdle个连接
minIdle 连接池中最少空闲maxIdle个连接
initialSize 初始化连接数目
maxWait 连接池中连接用完时,新的请求等待时间,毫秒
username 数据库用户名
password 数据库密码
-->
<Resource name="jndi/testConnDB"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/jiemian_db"
username="root"
password="123456"
maxActive="20"
maxIdle="10"
maxWait="10000"/>
</Context>
第二步: 在项目中的web.xml添加resource-ref节点
同上一节第二步。测试数据库连接池
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<%@page import="javax.naming.*"%>
<%@page import="javax.sql.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>Insert title here</title>
</head>
<body>
<%
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jndi/testConnDB");
%>
<b>连接数据库是否成功,通过DataSource方法。[<%=ds.getConnection()!=null %>]</b>
</body>
</html>
参考文章:
http://www.cr173.com/html/19802_1.html