tomcat 配置mysql的数据库连接池

      我的编程 2006-3-12 20:12

今天看了 个高人的不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是连接池性能的关键因素,当然这取决于服务器环境。

标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commenttime}{commentauthor}

{CommentUrl}
{commentcontent}