Tomcat5、6、7数据源配置详解

在JDBC操作中,打开和关闭数据库连接,是最耗费数据库资源的,我们可以在服务器(通常指某个类中使用Map来维护已经存在的数据库连接)上存放一定量的数据库连接,每当程序要连接数据库时,就将这些链接给它们,而一旦程序退出数据库操作时,要将这些链接返回给服务器,而不是直接进行关闭/释放。

在JDBC操作中,打开和关闭数据库连接,是最耗费数据库资源的,我们可以在服务器(通常指某个类中使用Map来维护已经存在的数据库连接)上存放一定量的数据库连接,每当程序要连接数据库时,就将这些链接给它们,而一旦程序退出数据库操作时,要将这些链接返回给服务器,而不是直接进行关闭/释放。

下图是数据源的基本概念:

Tomcat数据源

1:通过Connection Pool 管理数据库连接。如:C3P0、DPCP等

2:通过DataSource 去管理Connection Pool。如:C3P0、DPCP等

3:DataSource被JNDI Tree绑定。

全局可用

全局可用的范围意味着tomcat服务器下面的所有应用都可以使用这个context元素定义的资源。全局可用范围的context元素在文件 ${CATALINA_HOME}/conf/context.xml 文件中描述。这个文件在tomcat刚刚被安装的时候,是没有定义任何资源的。我们可以看到,这个文件的内容:

<Context>
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>

其中的 <watchedresource>WEB-INF/web.xml</watchedresource>表示服务器会监视应用的WEB-INF/web.xml 文件来知道那个应用会引用在此处定义的资源。

下面的例子都是使用MySQL数据库:

一、配置Tomcat5数据源

1、配置tomcat下的conf下的context.xml文件,在之间添加连接池配置:

<Context>
  <Resource auth="Container" description="DB Connection"
            name="jdbc/testTomcat5" type="javax.sql.DataSource"/>
  <ResourceParams name="jdbc/testTomcat5">
    <parameter>
      <name>maxWait</name>
      <value>5000</value>
    </parameter>
    <parameter>
      <name>maxActive</name>
      <value>4</value>
    </parameter>
    <parameter>
      <name>password</name>
      <value>root</value>
    </parameter>
    <parameter>
      <name>url</name>
      <value>jdbc:mysql://localhost:3306/conpool</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>
</Context>

参数说明:

    driveClassName:JDBC驱动类的完整的名称;

    maxActive:同时能够从连接池中被分配的可用实例的最大数;

    maxIdle:可以同时闲置在连接池中的连接的最大数;

    maxWait:最大超时时间,以毫秒计;

    password:用户密码;

    url:到JDBC的URL连接;

    user:用户名称;

    validationQuery:用来查询池中空闲的连接。

2、配置项目中/WEB-INF/web.xml

<resource-ref>
    <description>DB Connection</description>
    <res-ref-name>jdbc/testpool</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

二、配置Tomcat6数据源

1、配置tomcat下的conf下的context.xml文件,在之间添加连接池配置:

<Resource name="jdbc/testTomcat6"
       auth="Container"
       type="javax.sql.DataSource"
       driverClassName="oracle.jdbc.driver.OracleDriver"
       url="jdbc:oracle:thin:@localhost:1521:testTomcat6"
       username="root"
       password="aaaaaa"
       maxActive="100"
       maxIdle="30"
       maxWait="10000" />

说明:

    name 表示指定的jndi名称

    auth 表示认证方式,一般为Container

    type 表示数据源类型,使用标准的javax.sql.DataSource

    maxActive 表示连接池当中最大的数据库连接

    maxIdle 表示最大的空闲连接数

    maxWait 当池的数据库连接已经被占用的时候,最大等待时间

    logAbandoned 表示被丢弃的数据库连接是否做记录,以便跟踪

    username 表示数据库用户名

    password 表示数据库用户的密码

    driverClassName 表示JDBC DRIVER

    url 表示数据库URL地址

2、配置你的应用下的web.xml中的之间加入:

<resource-ref>
    <description>DB Connection</description>
    <res-ref-name>jdbc/testTomcat6</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

在以往的tomcat当中还需要在web.xml指定相应的resource,在tomcat 5.5以后的版本不写也可以,但建议还是配置。

三:配置Tomcat7数据源

1、将下面代码添加到Tomcat的%TOMCAT_HOME%confcontext.xml中的<Context></Context>标签中

<Context>
    <Resource 
        name="jdbc/testTomcat7" 
        auth="Container" 
        type="javax.sql.DataSource"
        maxActive="100" 
        maxIdle="30" 
        maxWait="10000"
        username="root" 
        password="aaaaaa" 
        driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://localhost:3306/testTomcat7"
    />
</Context>

上下文context.xml中的参数的解析如下:

    name 属性是数据源名称,通常采取jdbc/**。

    driverClassName 属性是驱动程序名称。

    username,password,数据库名称和密码。

    url 访问的数据库路径。其中url的内容组成解析上篇博客中已经分析。

    maxActive 属性是并发连接的最大数。设置为0则无限制。

    maxWait 属性是等待连接的最大连接的时间。

    maxIdle 属性是连接池中空闲的连接的个数。

2、修改web.xml

    打开%TOMCAT_HOME%confweb.xml,在</web-app>的前面添加以下内容:

<description>MySQL Test App</description>
<resource-ref>
    <description>DB Connection</description>
    <res-ref-name>jdbc/testTomcat7</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

注意:上面的修改是针对该Tomcat下面的所有WEB项目,如果只针对某一个WEB项目,则修改该WEB项目WEB-INFweb.xml文件。

生活总会给你答案的,但不会马上把一切都告诉你。只要你肯等一等,生活的美好,总在你不经意的时候,盛装莅临。
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号