今天看了 个高人的不blog终于成果配置成了tomcat下的数据库连接池
引用http://www.matrix.org.cn/resource/article/43/43722_Tomcat.html
上边说了有tomcat5.5与5.0的配置,我是5.5的tomcat,但是把5.0的也应用过来了
<%TOMCAT_HOME%>\conf\server.xml的<Host>...</Host>之间加入以下代码
<Context path="" docBase="D:/jcc"
debug="5" reloadable="true" crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_DBTest_log." suffix=".txt"
timestamp="true"/>
<Resource name="jdbc/JCC"
auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/JCC">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
<parameter>
<name>username</name>
<value>jcc</value>
</parameter>
<parameter>
<name>password</name>
<value>jsp.com.cn</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost/jcc</value>
</parameter>
</ResourceParams>
</Context>
5.5的如下
<Context path="test" docBase="D:/jcc"
debug="5" reloadable="true" crossContext="true">
<Resource name="jdbc/JCC" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="jcc" password="jsp.com.cn" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/jcc"/>
</Context>
这里数据库的建立过程就不说了。给处一个测试文件jcc.jsp:
<%@ page contentType="text/html:charset=gb2312" %>
<%@ page import="java.sql.*" %>
<%@ page import="javax.sql.DataSource" %>
<%@ page import="javax.naming.*" %>
<html>
<body>
<%
try{
Context initCtx=new InitialContext();
DataSource db = (DataSource)initCtx.lookup("java:comp/env/jdbc/jcc");
Connection conn= db.getConnection();
Statement stmt= conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from user");
out.println("user-list" + "<br>");
while(rs.next())
{
out.print(rs.getString(1) + " ");
out.print(rs.getString(2) + "<br>");
}
rs.close();
stmt.close();
conn.close();
}catch(Exception e){
out.print(e);}
%>
</body>
</html>
Tomcat连接池中,部分参数说明如下:
maxActive="100" <!--最大活跃连接数,这里取值为100,表示同时最多有100个数据库连接。设为0表示无限制。-->
maxIdle="30" <!--最大的空闲连接数,这里取值为30,表示即使没有数据库连接时依然可以保持30个空闲的连接,而不被清除,随时处于待命状态。设为0表示无限制。-->
maxWait="10000" <!--最大建立连接等待时间。如果超过此时间将接到异常。这里设置为10000,表示10秒后超时。设为-1表示无限制,直到超时为止。-->
jdbc:mysql://localhost/jcc <!--数据库连接字符串,同jdbc:mysql://localhost:3306/jcc?autoReconnect=true-->
PS:如果最大数据库活跃连接数过大,可想而知,内存占用量是非常惊人的!如果空闲连接数过大,则资源利用率低,连接池长期未释放,可导致连接池结点异常。所以选好maxActive和maxIdle是连接池性能的关键因素,当然这取决于服务器环境。
回复Comments
{commenttime}{commentauthor}
{CommentUrl}
{commentcontent}