Tomcat6.0数据库连接池到底应该怎么配置
按照一些论坛的说法
我在 server.xml 的 host 直接加入了
<Context path="/web" docBase="web" debug="0" reloadable="true" crossContext="true">
<Resource name="jdbc/bbs"
auth="Container" type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
maxIdle="20"
maxWait="5000"
username="root"
password="admin"
url="jdbc:mysql://localhost:3306/bbs"
maxActive="100"
removeAbandoned="true"
removeAbandonedTimeout="60"
logAbandoned="true"/>
</Context>
在 web.xml 中加入了
<ResourceLink name="jdbc/bbs" global="jdbc/bbs" type="javax.sql.DataSource"/>
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@ page import = "java.sql.*" %>
<%@ page import = "javax.naming.InitialContext"%>
<%@ page import = "javax.sql.DataSource" %>
<!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=GB18030">
<title>TestDatabase</title>
</head>
<%
ResultSet rs = null;
InitialContext ic = new InitialContext();
DataSource ds = (DataSource)ic.lookup("java:comp/env/jdbc/bbs");
Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
String sql = "select * from article ";
rs = stmt.executeQuery(sql);
%>
<body>
<%
while(rs.next())
{
%>
<table>
<tr>
<td> <%= rs.getString("title") %> </td>
</tr>
</table>
<%
}
%>
</body>
</html>
以上是测试程序 报错 500
我把原因贴在楼下
[解决办法]
<Context path="/web" docBase="web" debug="0" reloadable="true" crossContext="true">
path是你的web应用发布名吗?docBase是你的系统的当地目录吗(如:c:\**\你的系统目录)?Exception说"Name jdbc is not bound in this Context"
[解决办法]
数据连接池也可以在项目下的 META-INF 文件夹下 建立一个context.xml
<?xml version='1.0' encoding='utf-8'?><Context> <Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/bbs" username="root" password="root" maxActive="50" maxIdle="20" maxWait="10000" /> </Context>
[解决办法]
配置web.xml
添加
<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>
[解决办法]
把mysql的驱动包,考到Tomcat6.0文件
lib目录下面, OK
[解决办法]
不要用TOMCAT的啊,,,不好啊,我最近也弄这个 ,我觉得proxool配置起来实在是太方便了
Connection conn = null;
Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
conn = DriverManager.getConnection("proxool.example1:org.gjt.mm.mysql.Driver:jdbc:mysql://localhost:3306/test1","root","111111");
就改这么点东西就行了,驱动改成他这个,然后把MYSQL或者是要用的数据库的驱动写到getConnection里的proxool.example1:后面
proxool.example1:中的example1是连接池的名字,你可以按照你的需求改
http://proxool.sourceforge.net/
这个是proxool的网址
我测试过了
用了这个连接池,本地测试啊
链接100次用了1.7秒
不用连接池33秒左右
用连接池1000次 6秒多
不用连接池。。。。。我没敢测。。。。。。
[解决办法]
将资源配置写在GlobalNamingResources下:
<Resource name="jdbc/bbs" auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" maxIdle="20" maxWait="5000" username="root" password="admin" url="jdbc:mysql://localhost:3306/bbs" maxActive="100" removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"/>