Tomcat数据库连接池配置- 应用服务器数据库连接池配置-平台部署文档
目录

Tomcat数据库连接池配置

Step1:拷贝数据源的JDBC驱动,不同的tomat版本放置驱动的目录不同

    1.Tomcat4,Tomcat 5.0及Tomcat5.5驱动目录为:tomcat安装目录\common\lib

    2.Tomcat6及以上:tomcat安装目录\lib

Step2:配置连接信息

    不同版本的tomcat的数据库连接池配置有所差异,但是都是通过配置文件来维护。

    Tomcat5需要在server.xml中进行配置或者在\conf\Catalina\localhost添加上下文配置文件做配置。

    Tomcat5.5和Tomcat6可直接在应用目录的META-INF目录下增加context.xml并在其中添加数据源配置信息。(或者在全局的context.xml中增加数据源配置信息)。此外还支持和tomcat5相同的

\conf\Catalina\localhost添加上下文配置文件方式。

注意:系统默认的系统数据源名称为mis2datasource,支持更改系统数据源名称,如需修改系统数据源名称,此处可配置指定名称的连接池,并在发布的应用包中修改web-inf\misInitConfig.xml中的系统数据源名称,如下

<sys_datasourceName dataType="11" default=" mysqlds " inputType="text" value=" 系统数据源名称 "

下面详细介绍不同tomcat版本数据源配置方式的差异。

Tomcat5.0数据源配置

方法一: 在\conf\Catalina\localhost下建立应用同名的xml格式如下:

<Context docBase="reportmis" path="/reportmis" privileged="true" workDir="work/Catalina/localhost/reportmis">
  <Resource auth="Container" name="mis2datasource" type="javax.sql.DataSource"/>
  <ResourceParams name="mis2datasource">
    <parameter>
      <name>password</name>
      <value>sa12#</value>
    </parameter>
    <parameter>
      <name>url</name>
      <value>jdbc:sqlserver://192.168.10.94:1433;DatabaseName=xitong2</value>
    </parameter>
    <parameter>
      <name>driverClassName</name>
      <value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value>
    </parameter>
    <parameter>
      <name>username</name>
      <value>sa</value>
    </parameter>
    <parameter>
      <name>maxActive</name>
      <value>5000</value>
    </parameter>
    <parameter>
      <name>maxIdle</name>
      <value>50</value>
    </parameter>
    <parameter>
      <name>maxWait</name>
      <value>1000</value>
     </parameter>
  <parameter>
      <name>testOnBorrow</name>
      <value>true</value>
     </parameter>
  <parameter>
      <name>validationQuery</name>
      <value>select * from t_res_type</value>
     </parameter>
  </ResourceParams>  </Context>

方法二: /conf/server.xml文件中找到应用对应的context节点配置增加数据源连接的如下图中红色字体标出部分(如果没有则在<HOST></HOST>节点中添加),此配置方式是局部的数据源配置仅对此应用有效。

<Context path="/reportmis" docBase="d:/reportmis" debug="0" privileged="true">
<Resource auth="Container" name="mis2datasource" type="javax.sql.DataSource"/>
  <ResourceParams name="mis2datasource">
    <parameter>
      <name>password</name>
      <value>sa12#</value>
    </parameter>
    <parameter>
      <name>url</name>
      <value>jdbc:sqlserver://192.168.10.94:1433;DatabaseName=xitong2</value>
    </parameter>
    <parameter>
      <name>driverClassName</name>
      <value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value>
    </parameter>
    <parameter>
      <name>username</name>
      <value>sa</value>
    </parameter>
    <parameter>
      <name>maxActive</name>
      <value>5000</value>
    </parameter>
    <parameter>
      <name>maxIdle</name>
      <value>50</value>
    </parameter>
    <parameter>
      <name>maxWait</name>
      <value>1000</value>
     </parameter>
  <parameter>
      <name>testOnBorrow</name>
      <value>true</value>
     </parameter>
  <parameter>
      <name>validationQuery</name>
      <value>select * from t_res_type</value>
     </parameter>
  </ResourceParams> </Context>

属性说明:

    name,数据源名称,通常取”jdbc/XXX”的格式;

    type,”javax.sql.DataSource”;

    username,数据库连接用户

    password,数据库连接密码;

    driveClassName,数据库驱动;

    maxIdle,最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连接将被标记为不可用,然后被释放。设为0表示无限制。

    maxActive,连接池的最大数据库连接数。设为0表示无限制。

    maxWait ,最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。

    testOnBorrow,true 指明是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个.

    validationQuery:SQL查询,用来验证从连接池取出的连接,在将连接返回给调用者之前.如果指定,则查询必须是一个SQL SELECT并且必须返回至少一行记录,和testOnBorrow配套使用。产品要求必须设置。

说明:下面介绍的其他方法连接配置文件的属性说明和此处相同。

方法三:在server.xml中设置通用数据源,然后在具体web应用中引用该数据源

    (1) 在server.xml的<GlobalNamingResources> </GlobalNamingResources>节点中加入如下代码,使之成为公用的数据源

 <Resource auth="Container" name="mis2datasource" type="javax.sql.DataSource"/>
  <ResourceParams name="mis2datasource">
    <parameter>
      <name>password</name>
      <value>sa12#</value>
    </parameter>
    <parameter>
      <name>url</name>
      <value>jdbc:sqlserver://192.168.10.94:1433;DatabaseName=xitong2</value>
    </parameter>
    <parameter>
      <name>driverClassName</name>
      <value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value>
    </parameter>
    <parameter>
      <name>username</name>
      <value>sa</value>
    </parameter>
    <parameter>
      <name>maxActive</name>
      <value>5000</value>
    </parameter>
    <parameter>
      <name>maxIdle</name>
      <value>50</value>
    </parameter>
    <parameter>
      <name>maxWait</name>
      <value>1000</value>
     </parameter>
  <parameter>
      <name>testOnBorrow</name>
      <value>true</value>
     </parameter>
  <parameter>
      <name>validationQuery</name>
      <value>select * from t_res_type</value>
     </parameter>
  </ResourceParams>

(2) 在server.xml的在<Context></Context>节点中加入数据源链接,如下:

<Context path="/reportmis" docBase="reportmis" reloadable="true" crossContext="true">
<ResourceLink    name="jdbc/DBPool"     type="javax.sql.DataSource"     global="mis2datasource"/>
 </Context>

Tomcat5.5、tomcat6、tomcat7的数据库连接池配置

方法一:在\conf\Catalina\localhost下建立应用同名的xml

<?xml version='1.0' encoding='utf-8'?>
<Context docBase="custom_reportmis" path="/custom_reportmis" privileged="true" workDir="work\Catalina\localhost\custom_reportmis">
    <Resource name="mis2datasource"   
    auth="Container"    
    type="javax.sql.DataSource"    
    driverClassName="org.hsqldb.jdbcDriver"   
    url="jdbc:hsqldb:hsql://localhost:9002/gezdemo"   
    username="sa"   
    password=""   
    maxActive="100"   
    maxIdle="30"    
    maxWait="10000" /> 
 <Resource name="demo"   
    auth="Container"    
    type="javax.sql.DataSource"    
    driverClassName="org.hsqldb.jdbcDriver"   
    url="jdbc:hsqldb:hsql://localhost:9002/gezdemo"   
    username="sa"   
    password=""   
    maxActive="100"   
    maxIdle="30"    
    maxWait="10000"
 validationQuery="select * from t_res_type"/> 
</Context>

方法二:直接在server.xml的在<Context></Context>节点中加入数据源设置格式和tomcat5 有差别。

<Context path="/runqian" docBase="runqian" reloadable="true" crossContext="true">
<Resource name="mis2datasource"  auth="Container" type="javax.sql.DataSource" password="rbp" username="rbp"  driverClassName="oracle.jdbc.driver.OracleDriver"  url="jdbc:oracle:thin:@127.0.0.1:1521:orcl"  maxActive="100"  maxIdle="30"  maxWait="5000" validationQuery="select * from t_res_type/>
</Context>

方法三:在应用包目录\META-INF \context.xml中进行配置,或者在\conf\context.xml中将所有web应用下的连接池进行统一配置,格式同上。

tomcat7一般使用这种方式。

<?xml version='1.0' encoding='utf-8'?>
<Context path="/runqian" docBase="runqian" reloadable="true" crossContext="true">
<Resource name="mis2datasource"  auth="Container" type="javax.sql.DataSource" password="rbp" username="rbp"  driverClassName="oracle.jdbc.driver.OracleDriver"  url="jdbc:oracle:thin:@127.0.0.1:1521:orcl"  maxActive="100"  maxIdle="30"  maxWait="5000" validationQuery="select * from t_res_type/>
</Context>

Tomcat连接池连接数设置

数据库连接池配置中和连接数相关的参数有以下几个,可通过修改这些属性可调整tomcat的连接数设置:

    minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10

    maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75

    acceptCount:允许的最大连接数,应大于等于maxProcessors,默认值为100

    enableLookups:是否反查域名,取值为:true或false。为了提高处理能力,应设置为false

    connectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。