配置Tomcat5.0的MySQL数据库连接池(二) (转载)
写一测试代码来测试一下刚才所做的一些吧,新建一个mysqlpool.jsp文件
内容如下:
<%@
page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@
page import="javax.naming.*"%>
<%@ page session="false" %>
<%@
page
contentType="text/html;charset=gb2312" %>
<html>
<head>
<meta
http-equiv="Content-Type" content="text/html;
charset=gb2312">
<title></title>
<%
out.print("连接池测试开始<br>");
DataSource ds = null;
try{
InitialContext ctx=new InitialContext();
ds=(DataSource)ctx.lookup("java:comp/env/jdbc/mysqlpool");
Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
String strSql = " select * from user";
ResultSet rs = stmt.executeQuery(strSql);
while(rs.next()){
out.print(rs.getString(1)+" ");
out.print(rs.getString(2)+" ");
out.print(rs.getString(3)+" ");
out.print(rs.getString(4)+" ");
out.print(rs.getString(5)+" ");
out.print(rs.getString(6)+"<br>");
}
out.print("测试结束");
}
catch(Exception
ex){
out.print("出现例外,信息是:"+ex);
ex.printStackTrace();
}
%>
</head>
<body>
</body>
</html>
代码结束。
ds=(DataSource)ctx.lookup("java:comp/env/jdbc/mysqlpool");这条代码表示找名字叫jdbc/mysqlpool的DataSource。
在浏览器的地址栏输入: http://localhost://8080/yourweb/mysqlpool.jsp 出现了
连接池测试开始
localhost root 4a537f9733eb2bf4 Y Y Y
% root *13079F362E38088B725A0134245BEEA4F67AD89D Y Y Y
测试结束
恭喜你,你成功了!
注意:以上方法是在Tomcat5.028下调试成功的,我相信Tomcat5.X版本的通过这种方式也是可以达到一样有效果的。
还有一种方法也是可以配置数据库连接池的,我说明下
在%TOMCAT_HOME%\conf\Catalina\localhost\yourweb.xml的<Context></Context>之间加入以下代码就可以了,一步搞定
<Resource auth="Container" description="MySQL Connection Pool"
name="jdbc/mysql" type="javax.sql.DataSource"/>
<ResourceParams name="UserDatabase">
<parameter>
<name>factory</name>
<value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
</parameter>
<parameter>
<name>pathname</name>
<value>conf/tomcat-users.xml</value>
</parameter>
</ResourceParams>
<ResourceParams
name="jdbc/mysqlpool">
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>4</value>
</parameter>
<parameter>
<name>password</name>
<value>yusaihua</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost/mysql?autoReconnect=true&useUnicode=true&characterEncoding=GB2312</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>2</value>
</parameter>
<parameter>
<name>username</name>
<value>root</value>
</parameter>
</ResourceParams>
不需要通过 http://127.0.0.1:8080/admin 来添加数据库源,呵呵,比较简单吧!
以上这些都是我花了二天才弄出来的,没有找人帮忙,当时真的要疯掉了,一个这么简单的东西,哎,网上的东西多,但是太多错误了,我给出我调试程序时出现过的错误,和我的解决方案,希望能帮助大家,祝大家工作愉快 :)
1)错误提示:
javax.naming.NameNotFoundException: Name mysqlpool is not bound in
this Context
->表示没有找到叫"mysqlpool"的数据源。
a)请检查连接池配置文件%TOMCAT_HOME\conf\server.xml中的<Resource name="jdbc/mysqlpool" type="javax.sql.DataSource"/>是不是和mysqlpool.jsp里面的ds=(DataSource)ctx.lookup("java:comp/env/jdbc/mysqlpool")一致
b)请检查你%TOMCAT_HOME%\conf\Catalina\localhost\yourweb.xml里面是否有
<ResourceLink
name="jdbc/mysqlpool" global="jdbc/mysql"
type="javax.sql.DataSourcer"/>代码。
2)错误提示:
org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC
driver class
'com.mysql.jdbc.Driver'
->说明dbcp没有发现JDBC驱动'com.mysql.jdbc.Driver',请检查你的%TOMCAT_HOME%\common\lib\下面是否有MySQL的JDBC驱动程序,或者是不是下版本有问题,到http://dev.mysql.com/downloads/connector/j/3.1.html下载最新的版本。