关于连接池的配置,本人一直觉得很烦琐,最近因为项目中又需要配置,足足弄了一个下午才弄清楚,虽然网上有许多文章讲到,我整理后将最完整的方法提供如下
STEP1
登陆TOMCAT管理界面 http://localhost/admin(用户名密码在TOMCAT的USER.XML中有记录)
选择Resources-Data Sources-Create New Data Source
JNDI Name: jdbc/mysql
Data Source URL: jdbc:mysql://localhost:3306/dbpooltest
JDBC Driver Class: com.mysql.jdbc.Driver
User Name: root
Password: 111
Max. Active Connections: 4
Max. Idle Connections: 2
Max. Wait for Connection: 5000
点击save-commit changes-log out
STEP2
进入TOMCAT5.5/conf/文件夹,修改context.xml.在<context>后加入
<Resource name="jdbc/mysql"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/dbpooltest"
username="root"
password="111"
maxActive="4"
maxIdle="2"
maxWait="5000" />
STEP3
进入Tomcat 5.5/conf/Catalina/localhost/,新建dbpooltest.xml,内容如下
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource
auth="Container"
name="jdbc/mysql"
type="javax.sql.DataSource"
password="111"
driverClassName="com.mysql.jdbc.Driver"
maxIdle="2"
maxWait="5000"
username="root"
url="jdbc:mysql://localhost:3306/dbpooltest"
maxActive="4"/>
</Context>
STEP4
在ECLIPS的dbpooltest工程下找到WebRoot/WEB-INF-web.xml
在</web-app>之前加入
<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>
STEP5
在ECLIPS中引入JDBC驱动包,我这里为mysql-connector-java-5.0.8-bin.jar
并将这个文件考到tomcat5.5/commen/lib/下
配置完成!
测试用例:
<!doctype html public "-//w3c//dtd html 4.0 transitional//en"
"http://www.w3.org/TR/REC-html40/strict.dtd">
<%@ page import="java.sql.*"%>
<%@ page import="javax.naming.*"%>
<%@ page session="false" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Test of MySQL connection pool</title>
</head>
<body>
<%
try{
Context initCtx = new InitialContext();
Context ctx = (Context) initCtx.lookup("java:comp/env");
Object obj = (Object) ctx.lookup("jdbc/mysql");
javax.sql.DataSource ds = (javax.sql.DataSource)obj;
Connection conn = ds.getConnection();
out.print("start");
Statement stmt=conn.createStatement();
String sft="select * from test";
ResultSet rs=stmt.executeQuery(sft);
while(rs.next()){
out.print(rs.getString(2));
}
out.print("over");
conn.close();
}
catch(Exception ex){
out.print(ex.getMessage());
ex.printStackTrace();
}
%>
</body>
</html>
***********************************************************************************
Tips:
dbpooltest为工程名
MySQL相关参数:http://hi.baidu.com/jt88/blog/item/676ab1a13118608947106412.html