tomcat配置数据库连接池


 数据库连接是比较耗时的操作,如果每次访问数据库都开闭一次连接的话,在大批量访问时,必然会导致性能问题,于是这里成为了你的性能瓶颈。为了解决这个问题,提出了连接池的想法。

        其原理大致为:维护一个数据库连接队列,每次使用的时候,到空闲的连接队列中取一个,使用后再将连接放回连接池,这个连接池允许配置最大活动连接数和最大空闲连接数、最大等待数,数量过大也耗内存,数量过少,和没有配置一样,所以在配置的时候,需要多少连接根据自己的程序访问数据库的频率、同时访问量而定。

        下面介绍具体的配置,实际上,我是参考了http://tomacat.apache.org上面的介绍。配置前先说明我使用的环境。

        操作系统:Windows XP

        数据库服务器:MySQL 5.0

        web服务器:tomcat 6.0

        

        首先更改tomcat下面的配置文件,位置:%TOMCAT_HOME%\conf\server.xml,我的TOMCAT_HOME是D:\Program Files\Apache Software Foundation\Tomcat 6.0。在<host></host>之间添加下面的内容(加粗的为添加的内容):

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">

<Context path="/DBTest" docBase="DBTest" debug="5" reloadable="true" crossContext="true"> <Resource name="jdbc/TestDB" auth="Container" t ype="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="root" password="hanry112358" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/test?autoReconnect=true"/> </Context>

</Host>



 其中:/DBTest是放在webapps下面的工程名称,jdbc是自己对连接的命名,在下面的访问中要用到,最大的活跃连接数、最大空闲的连接数、最大等待连接数目都是可自行设置的。username、password、url根据自己的数据库连接进行设置

        然后更改web.xml(DBTest\WEB-INF\web.xml)中的配置,添加如下代码:


<resource-ref>

      <description>DB Connection</description>

      <res-ref-name>jdbc/TestDB</res-ref-name>

      <res-type>javax.sql.DataSource</res-type>

      <res-auth>Container</res-auth>

</resource-ref>

   这里唯一需要注意的就是jdbc/TestDB与第一步中是对应的。

  最后在类中读取连接池的配置,代码如下:


import javax.naming.Context;

import javax.naming.InitialContext;

import javax.sql.DataSource;

Context initContext = new InitialContext();

Context envContext  = (Context)initContext.lookup("java:/comp/env");

DataSource ds = (DataSource)envContext.lookup("jdbc/TestDB");

Connection conn = ds.getConnection();


  到此连接池的配置就结束了,这种配置方法有可能有些问题,所以最好去官网上找明确的方法,后面还有一篇关于tomcat配置问题的博文。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值