Tomcat 中配置数据库连接池

配置数据库连接池

    基于 HTTP 协议的 Java Web 程序是无状态的,因此在应用程序中使用 JDBC 时,每次处理客户端请求时都会重新建立数据库连接。如果客户端的请求非常频繁,服务器端在处理数据库时将会消耗非常多的资源,因此在 Tomcat 中提供了数据库连接池技术。数据库连接池负责分配,管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个数据库连接。在使用完一个数据库连接后,将其归还数据库连接池,以备其他程序使用。

    Tomcat 中配置数据库连接池有两种方法。

    1.配置全局数据库连接池

    (1)打开<Tomcat 安装目录>/conf/server.xml 文件,并从中找到<GlobalNamingResources>元素,然后加入一个子元素<Resources>,这个子元素的配置代码如下(mysql数据库为例)

 

    <Resources name="jdbc/mydb" auth="Container"

              type="javax.sql.DataSource"

              driverClassName="com.mysql.jdbc.Driver"

              url="jdbc:mysql://localhost:3306/mydb?characterEncoding=UTF8"

              username="root"

              password="1234"

              maxActive="300"

              maxIdle="50"

              maxWait="5000"/>

 

    上面的配置代码中有几个和数据库连接池性能有关的属性的说明。

    maxActive:连接池可以存储的最大连接数,也就是应用程序可以同时获得的最大连接数。这个属性值一般根据 Web 程序的最大访问量来设置。

    maxIdle:最大空闲连接数。当应用程序使用完一个数据库连接后,如果连接池中存储的连接数小于maxIdle,那么这个数据库并不马上释放,而是仍然存储在连接池中,以备其他程序使用。这个属性值一般根据 Web 程序的平均访问量来设置。

    maxWait:暂时无法获得数据库连接的等待时间(单位:ms)。如果 Web 程序从数据库连接池中获得的数据库连接数已经等于maxActive,而且都还没有归还给连接池,这是再有持续向获得数据库连接,就会等待maxWait 所指定的时间。如果超过 maxWait 所指定的时间还无法获得数据库连接,就会抛出异常。

(2)<Tomcat 安装目录>/conf/Catalina/localhost 中建立一个 demo.xml 文件(文件名要和 path 属性值一致),然后输入如下内容:

 

              <Context path=”/demo” docBase=”demo” debug=” 0” >

<Resource name=”jdbc/mydb” glonal=”jdbc/mydb” type=”javax.sql.DataSource”/>

              </Context>

 

     2.配置局部数据库连接池

         <Tomcat 安装目录>/conf/Catalina/localhost 中建立一个demo.xml 文件,然后输入如下内容:

      <Context path=”/demo” docBase=”demo” debug=” 0” >

                 <Resources name="jdbc/mydb" auth="Container"

                            type="javax.sql.DataSource"

                            driverClassName="com.mysql.jdbc.Driver"

                            url="jdbc:mysql://localhost:3306/mydb?characterEncoding=UTF8"

                            username="root"

                            password="1234"

                            maxActive="300"

                            maxIdle="50"

                            maxWait="5000"/>

         </Context>

 

     配置完数据库连接池后,可以在Servlet service 方法或其他处理HTTP 请求的方法中使用如下代码来连接数据库:

      Javax.naming.Context ctx = new javax.naming.InitialContext();

      //获取DataSource对象

          Javax.sql.DataSource ds = (javax.sql.DataSource) ctx.lookup(“java:/comp/env/jdbc/mydb”);

       Connection conn = ds.getConnection();  //获得Conection 对象

 

     获得Connection 对象后的操作就和不使用数据库连接池操作数据库时一样的了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值