首先要确认在项目下已经有了相关的数据库连接驱动包,下面例子我用的是IBM DB2 10.1 Express-C 做演示:
第一步:在Tomcat的配置文件%TOMCAT_HOME%\conf\context.xml中添加信息:
<Resource auth="Container" driverClassName="com.ibm.db2.jcc.DB2Driver" maxActive="8" maxIdle="4" maxWait="3000" name="jdbc/text" username="db2admin" password="db2admin" type="javax.sql.DataSource" url="jdbc:db2://127.0.0.1:50000/text" />
type:数据源方式。
driverClassName:驱动程序名称。(此文中是DB2驱动程序)
username,password:数据库名称和密码
name:注册到JNDI树上的名称(JNDI采用树形结构管理我们的对象)
url:数据库连接字符串
maxActive:并发连接的最大数。设置为0则无限制。
maxWait:等待连接的最大连接的时间。
maxIdle:初始时连接池中空闲的连接的个数。
上文中的设置的 maxActive="8"说明可以最大连接的个数为8个,再建立连接,则出现异常。
第二步:把配置文件context.xml剪切到WebRoot/META-INF中。(若是只有一个项目使用连接池的话,则剪切到使用连接池项目WebRoot/META-INF中。若是多个项目都使用连接池,则不进行操作第二步。)
第三步:则在程序中获得连接:
新建一个jsp页面Test.jsp进行测试:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page language="java"
import="java.util.*,javax.naming.*,java.sql.*,javax.sql.*"%>
<%
Connection conn = null;
PreparedStatement pstat = null;
ResultSet resu = null;
try {
Context ctx = new InitialContext();
//获取JNDI名称
String strLookup = "java:comp/env/jdbc/drp";
//从JNDI树上取得连接池实现
DataSource dataSource = (DataSource) ctx.lookup(strLookup);
conn = dataSource.getConnection();
pstat = conn
.prepareStatement("SELECT USER_ID, USER_NAME, PASSWORD, CONTACT_TEL, EMAIL,CREATE_DATE FROM T_USER");
resu = pstat.executeQuery();
while (resu.next()) {
System.out.println(resu.getString("USER_NAME"));
}
} finally {
if (resu != null) {
resu.close();
}
if (pstat != null) {
pstat.close();
}
if (conn != null) {
conn.close();
}
}
%>
注意使用完连接后一定要记得释放,要不然当连接池中的连接用完后会抛出导常(这样的问题在大的项目中很难发现)