首页 > 数据库 >使用Tomcat-5.5.20配置数据库连接池详细介绍

使用Tomcat-5.5.20配置数据库连接池详细介绍

时间:2022-10-21 13:02:27浏览次数:47  
标签:xml driverClassName jdbc 20 5.5 Tomcat 数据源 数据库 连接池

本文旨在给程序开发人员提供一个比较具体的Tomcat连接池参考方案,为了提高文章的可读性,文章前端引用了一位前辈的话,如果构成误解,请多多谅解,本文不是从商业考虑的。有问题请联系作者MSN:hpj2001(at)hotmail.com,Email:tocow(at)google.com。


连接池简介
   程序开发,存在很多问题:首先,每一次Web请求都要建立一次数据库连接。建立连接是一个费时的活动,每次都得花费0.05s~1s的时间,而且系统还要分配内存资源。这个时间对于一次或几次数据库操作,或许感觉不出系统有多大的开销。可是对于现在的Web应用,尤其是大型电子商务网站,同时有几百人甚至几千人在线是很正常的事。在这种情况下,频繁的进行数据库连接操作势必占用很多的系统资源,网站的响应速度必定下降,严重的甚至会造成服务器的崩溃。不是危言耸听,这就是制约某些电子商务网站发展的技术瓶颈问题。其次,对于每一次数据库连接,使用完后都得断开。否则,如果程序出现异常而未能关闭,将会导致数据库系统中的内存泄漏,最终将不得不重启数据库。还有,这种开发不能控制被创建的连接对象数,系统资源会被毫无顾及的分配出去,如连接过多,也可能导致内存泄漏,服务器崩溃。

数据库连接池(connection pool)的工作原理:

由上面的分析可以看出,问题的根源就在于对数据库连接资源的低效管理。

对于共享资源,有一个很著名的设计模式:资源池(Resource Pool)。该模式正是为了解决资源的频繁分配、释放所造成的问题。为解决上述问题,可以采用数据库连接池技术。数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量、使用情况,为系统开发、测试及性能调整提供依据。

一、Tomcat一般性说明
1、本压缩包内的tomcat为apache-tomcat-5.5.20,截止到2006-10-12,是www.apache.org上最新的tomcat版本。

2、Tomcat使用的端口都是默认的。两个比较重要的端口说明,shutdown port:8005;non-SSL HTTP/1.1 Connector port:8080。

3、涉及到修改的文件:

a../ conf下server.xml、web.xml

b../common/lib下增加ms-sql jdbc的三个jar包msbase.jar、mssqlserver.jar、msutil.jar

二、Tomcat配置连接池方案
本文针对的是tomcat 5.5版本的连接池介绍,其它版本可能不适用。

数据源可以配置成全局的和局部的:可以在任意Context中引用全局的数据源,在某一Context配置的数据源,不能在其它Context引用它。理解了全局和局部数据源的关系,下面就来介绍一下详细配置说明,如下:

1、编辑打开./confCatalina/localhost/gdczsam.xml可以看到:

<!--F hpj 2006-10-12

Defualt, we set all different Resources as Global-Resource[which defined in server.xml <GlobalNamingResources></GlobalNamingResources>],

and get special Resource we needed in per-web-application contexts from Global-Resource.

otherwise,we can set Resource we needed in any special Context, all two solutions are offered.


A.during application development set reloadable="true", when deployed production set reloadable="false"


B.many other datebase, url and driverClassName like underside list:

1.ms-sql driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"

url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=SAM_GDCZ"


2.oracle driverClassName="oracle.jdbc.driver.OracleDriver"

url="jdbc:oracle:thin:@127.0.0.1:1521:SAM_GDCZ"


3.postgresql driverClassName="org.postgresql.Driver"

url="jdbc:postgresql://127.0.0.1:5432/SAM_GDCZ"


4.mysql driverClassName="org.gjt.mm.mysql.Driver"[old mySql jdbc driver]

driverClassName="com.mysql.jdbc.Driver"

url="jdbc:mysql://127.0.0.1:3306/SAM_GDCZ"

-->


<Context docBase="setup directory" path="/gdczsam" reloadable="true" cookies="true" crossContext="true" privileged="true" antiResourceLocking="false" antiJARLocking="false">


<!--

<Resource name="jdbc/mssql-SAM_GDCZ"

auth="Container"

type="javax.sql.DataSource"

driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"

url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=SAM_GDCZ"

username="sa"

password=""

maxIdle="30"

maxWait="10000"

maxActive="100"/>

-->


<!--F hpj 2006-10-12

name: The name of the resource link to be created, which will be used in this web-application context environment.

global: The name of the linked global resource in the global JNDI context.

type: The fully qualified Java class name expected by the web application when it performs a lookup for this resource link.

-->

<ResourceLink name="mssql-SAM_GDCZ" global="jdbc/mssql-SAM_GDCZ" type="javax.sql.DataSource"/>


</Context>

本文提供的tomcat连接池的默认配置如上述,代码的说明性很强,既采用在./ conf/server.xml配置的全局数据源,然后在指定的Context中调用的方式。

server.xml中的数据源就是上述代码段注释的Resource节点,被包含在server.xml中的GlobalNamingResources节点中。

其中需要注意的是,该数据源需要在./conf/web.xml中加入一段声明,如下:

<resource-ref>

<description>DB Connection</description>

<res-ref-name>jdbc/mssql-SAM_GDCZ</res-ref-name>

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

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

</resource-ref>

2、第二种tomcat数据源的配置方式是本人推荐的:不在server.xml的GlobalNamingResources节点中加入Resource节点,而是对每个指定的Context配置数据源,这样结构比较清晰。采用这种方式的gdczsam.xml配置如下:

<Context docBase="setup directory" path="/gdczsam" reloadable="true" cookies="true" crossContext="true" privileged="true" antiResourceLocking="false" antiJARLocking="false">


<Resource name="jdbc/mssql-SAM_GDCZ"

auth="Container"

type="javax.sql.DataSource"

driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"

url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=SAM_GDCZ"

username="sa"

password=""

maxIdle="30"

maxWait="10000"

maxActive="100"/>


</Context>

3、以上两种方式,只要是不同的数据源都必须在./conf/web.xml中加入resource-ref声明。

4、产品部署时,不论使用什么方式来部署程序,都需要在./confCatalina/localhost中加入类似gdczsam.xml的文件来配置数据源。

标签:xml,driverClassName,jdbc,20,5.5,Tomcat,数据源,数据库,连接池
From: https://blog.51cto.com/defonds/5782418

相关文章

  • 服务器性能调优——Tomcat 数据库连接池配置,数据库连接池
    前言:关于并发访问,针对不同的项目,有不同的考虑。如果是商用的项目,那么并发是一定要支持的,同时考虑多少用户同时在线访问。有的数据访问量是百万或者千万级的,那一定要支持并发......
  • 向量启航,引擎加持 | 2022年10月《中国数据库行业分析报告》重磅发布
    为了帮助大家及时了解中国数据库行业发展现状、梳理当前数据库市场环境和产品生态等情况,从2022年4月起,墨天轮社区行业分析研究团队出品将持续每月为大家推出最新《中国数......
  • 2022年10月20日
      每个人都有每个人的福气,每个人都有每个人的花期,每个人都有每个人的节奏; 每天都是上天赐予的礼物,快乐幸福过好每一天。 我很富足!我很富足!我很富足!我很富足!我很富......
  • NOIP2014普及组复赛参考解析
    目录P2141[NOIP2014普及组]珠心算测验P2118[NOIP2014普及组]比例简化P2239[NOIP2014普及组]螺旋矩阵P2258[NOIP2014普及组]子矩阵题目传送P2141[NOIP2014......
  • P1850 [NOIP2016 提高组] 换教室
    [NOIP2016提高组]换教室题目描述对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程。在可以选择的课程中,有\(2n\)节课程安排在\(n\)个......
  • 题解 P5527 [Ynoi2012] NOIP2016 人生巅峰
    人生第一道Ynoi,同时也是1k通过。不卡常不难写,小清新Ynoi真的不多见了。前置知识:抽屉原理,树状数组,bitset,动态规划基础。首先考虑一个事实,当这个区间够长是必然有解的......
  • CVE-2021-23132:Joomla远程代码执行漏洞
    0x00概述:Joomla是一套知名的内容管理系统,使用的是php语言和mysql数据库开发的,可以在各大系统场景进行使用。影响版本:Joomla3.0.0~3.9.240x01复现过程:打开搭建好的环境......
  • NOIP2015普及组复赛参考解析
    目录P2669[NOIP2015普及组]金币P2670[NOIP2015普及组]扫雷游戏P2671[NOIP2015普及组]求和P2672[NOIP2015普及组]推销员题目传送P2669[NOIP2015普及组]金......
  • P5815 CQOI2010 扑克牌
    P5815CQOI2010扑克牌-洛谷|计算机科学教育新生态(luogu.com.cn)首先\(J\)是个障眼法,稍微思考可知它和数字牌无区别。直接把\(J\)当作\(0\)号牌即可。也就是......
  • 企业文化是数字化转型最大障碍-解读《2022年首席数据官调查报告》
    编 辑:孙宁​彭友们好,我是老彭。今天请孙老师给彭友们解读《2022年首席数据官调查报告》。2022年6月1日即将施行的《广州市数字经济促进条例》为探索首席数据官、数据经纪人......