本文旨在给程序开发人员提供一个比较具体的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>
<descrīption>DB Connection</descrīption>
<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的文件来配置数据源。
分享到:
相关推荐
这里的"apache-tomcat-5.5.20"和"apache-tomcat-5.5.20-admin"是Tomcat的一个特定版本,5.5.20,发布于较早的时间,尽管现在已经有了更新的版本,但在当时它是一个广泛使用的稳定版本。 1. **Apache Tomcat 5.5.20*...
在使用"apache-tomcat-5.5.20"时,开发者需要了解如何配置服务器,设置环境变量,部署Web应用,以及进行故障排查。对于初学者,理解Tomcat的工作原理和配置文件(如server.xml和context.xml)的内容至关重要。此外,...
对于`apache-tomcat-5.5.20-admin.zip`压缩包,其内容可能包含以下部分: - `webapps`目录:这里包含了Tomcat Manager和Host Manager的Web应用文件,如HTML、JSP和Java类文件。 - `conf`目录:可能包含`tomcat-users...
这个"apache-tomcat-5.5.20.zip"文件是Apache Tomcat的一个历史版本,具体为5.5.20。在这个版本中,用户可以找到支持Java EE 5规范的相关组件和服务。 Tomcat作为轻量级应用服务器,它的核心功能是提供Servlet容器...
这里的“apache-tomcat-5.5.20-ziyong.zip”是一个免安装版本的Tomcat 5.5.20,适用于快速部署和在特定环境下(如树莓派)运行Java服务。下面我们将深入探讨Tomcat 5.5.20及其相关知识点。 1. **Tomcat的版本历史**...
安装包 mysql-5.5.20-winx64---------------------------------------------------------------------------------------------------
apache-tomcat-5.5.20.exe
1. 下载与解压:首先,你需要从Apache Tomcat官网下载"jaxmao-tomcat-5.5.20-src.tar.gz"压缩包,然后使用Linux的tar命令进行解压: ``` tar -zxvf jaxmao-tomcat-5.5.20-src.tar.gz ``` 这将解压出"apache-tomcat-...
在描述中,我们看到"apache-tomcat-5.5.20.rar",这表明提供的文件是一个RAR压缩包,里面包含了Apache Tomcat 5.5.20的安装或解压程序,即"apache-tomcat-5.5.20.exe"。这个EXE文件是Windows平台上的可执行文件,...
### 使用Tomcat-5_5_20配置数据库连接池详细介绍 #### 一、Tomcat基本概述 在本文档中,我们将详细介绍如何在Tomcat 5.5.20版本中配置数据库连接池。Tomcat作为一款开源轻量级Web应用服务器,在Java Web开发领域...
"Tomcat 5.5.20 汉化版 for Windows jaxmao-tomcat-5.5.20" 是一个针对Windows操作系统的Tomcat服务器的汉化版本,由jaxmao进行本地化处理。Tomcat是Apache软件基金会的Jakarta项目中的一个核心项目,它是一个开源的...
apache-tomcat-5.5.20(解压就可以用windows版本).
【标题】"jaxmao-tomcat-5.5.20/免费服务器" 指的是一款基于Apache Tomcat 5.5.20版本的服务器软件,它是由jaxmao提供的一个免费版本,适合个人或小型项目使用。Tomcat是世界上最流行的开源Java Servlet容器,主要...
7. **GlobalNamingResources**:全局命名资源,可以在整个服务器范围内共享,比如数据库连接池。 8. **Web应用程序部署**:在Tomcat中,Web应用是以WAR(Web Application Archive)格式部署的,包含HTML、CSS、...
在本例中,我们讨论的是版本5.5.20的源代码版本,即"apache-tomcat-5.5.20-src.rar"。这个压缩包包含的是Tomcat的源代码,对于开发者来说,它是深入理解Tomcat工作原理、定制功能或进行扩展的重要资源。 Tomcat作为...
3.要想管理模块能够顺利运行,那么还要保证一点:确保设置了CATALINA_HOME这个系统环境变量,变量的值为你的tomcat的安装目录。如果你不愿意设置环境变量,那么也有一个方法,就是将【tomcat的安装目录】\server\...
【标题解析】:“jaxmao-tomcat-5.5.20中文安装版”这个标题表明这是一个由“jaxmao”发行的Tomcat服务器的特定版本,版本号为5.5.20,并且是专为中国用户设计的中文语言版本。Tomcat是一款流行的开源Java应用服务器...