Tomcat数据库连接池配置方法综述
类型:编程助手大小:3.6M语言:中文评分:7.5标签:立即下载数据库连接是一项关键、有限且昂贵的资源,在多用户web应用中尤为突出。数据库连接的管理会显著影响整个应用程序的可扩展性和健壮性以及程序的性能指标。数据库连接池就是为了解决这个问题而提出的。
数据库连接池负责分配、管理和释放数据库连接。它允许应用程序重用现有的数据库连接,而不是重新建立数据库连接。释放空闲时间超过最大空闲时间的数据库连接,可以避免因不释放数据库连接而导致的数据库连接丢失,可以明显提高数据库操作的性能。
当数据库连接池初始化时,一定数量的数据库连接将被创建并放入连接池。这些数据库连接数由最小数据库连接数设置。无论是否使用这些数据库连接,连接池将始终保证至少有这么多连接。当应用程序从连接池请求的连接数超过最大连接数时,这些请求将被添加到等待队列中。
在设置数据库连接池:的最小和最大连接数时,应考虑以下因素
1.最小连接数是连接池维护的数据库连接,因此如果应用程序不使用太多的数据库连接,将会浪费大量的数据库连接资源。
2.最大连接数是连接池应用的最大连接数。如果数据库连接请求的数量超过了次数,后续的数据库连接请求将被添加到等待列表中,这将影响后续的数据库操作
如果最小连接数和最大连接数之间的差异太大,第一个连接请求将有利可图,超过最小连接数的连接请求相当于建立了一个新的数据库连接。但是,这些小于最小连接数的数据库连接不会在使用后立即释放,而是会放入连接池中等待重用或空闲超时释放。
实例使用的Tomcat版本是6.0
方法1 :是在Tomcat的conf/context.xml中配置的。默认值在Tomcat \ Apache-Tomcat-6 . 0 . 33 \ conf目录下的context.xml文件中配置如下:
?xml版本='1.0 '编码='utf-8 '?上下文监视资源网络-INF/Web . XML/监视资源/上下文配置连接池:
?xml版本='1.0 '编码='utf-8 '?
context WatchedResourceWEB-INF/web . XML/WatchedResource!-配置oracle数据库的连接池-资源名称=' JDBC/oracleds '作者='容器'类型=' javax . SQL . data source ' maxActive=' 100 ' maxdle=' 30 ' maxWait=' 10000 ' username=' Scott ' password=' tiger ' driverClassName=' Oracle . JDBC . dirver . oracledriver ' URL=' JDBC : Oracle : hin : @ 127 . 0 . 1:00 . 1:000-要配置mysql数据库的连接池,需要做的额外步骤是将mysql的Java驱动类放在tomcat的lib目录中。maxIdle连接最多可以空闲。minIdle连接至少可以是空闲的。maxIdle连接可以通过initialSize初始化。当maxWait连接池中的连接耗尽时,新的请求等待时间,毫秒用户名数据库用户名密码数据库密码-资源名称=' JDBC/mysqlds' auth='容器'类型='javax.sql.DataSource '用户名='root '密码=' root ' MaxDole=' 30 ' MaxWait=' 10000 ' MaxActiVe=' 100 ' driverClassName=' com。MySQL。JDBC。驱动程序' URL=' JDBC : MySQL ://127 . 0 . 0 . 1:3306/db _ blog//配置好上下文后需要注意的两个步骤
1.将相应数据库的驱动程序类放在Xi安,tomcat的lib目录下
2.重新启动tomcat服务器以使配置生效
在web应用程序的web.xml中设置数据源引用,如下所示:
将以下内容添加到web-app/web-app节点
资源参考
描述关系型数据库数据库连接池/description!-参考数据源名字,同雄猫中配置的资源节点中名字属性值jdbc/mysqlds '一致JDBC/mysqlds/RES-ref-name!-资源类型-RES-type javax . SQL . data source/RES-type RES-authContainer/RES-auth RES-sharing-scopesharbor/RES-sharing-scope/resource-ref错误解决:
需要在环境或系统属性中指定类名,或者作为小应用程序参数,或者在应用程序资源文件中指定类名
在javax。命名。SPI。纳米经理。getinitialcontext(naming manager。Java :645)在javax。命名。initialcontext。getdefaultinitctx(initial context。Java :288)在javax。命名。initialcontext。geturodeltinitctx(initial context。Java :325)在javax。命名。initialcontext。查找(initialcontext。Java 33366)解决方案:
上面的异常信息是配置文件中命名服务没有初始化造成的
如果下面的问题都不存在
1.要去检查下配置文件中连接数据库的统一资源定位器参数是否正确2.以及是否导入了正常的包3.检查在雄猫中conf/server.xml文件,检查是否设置useNaming='false ',如果是,去掉
2.那就是通过主要的方法测试的,这个数据源不支持这样的测试方法,程序要运行在雄猫中才能找到相应的数据源。[我在测试时犯这样的错导致上面错误出现]
"%@"页面语言="Java "页面编码="UTF-8 "内容类型="文本/html;字符集=UTF-8'%
% @页面导入=' Java。SQL。* % % @页面导入=' javax。命名。* % % @页面导入=' javax。SQL。数据来源' % html标题Tomcat 6.0 JNDI!/标题/头身雄猫连接池测试,获取数据源br % try { //初始化查找命名空间上下文CTX=新的初始上下文();//参数java:/comp/env为固定路径上下文环境上下文=(上下文)CTX。查找(' Java :/comp/env ');//参数jdbc/mysqlds为数据源和命名服务绑定的名字数据源ds=(数据源)env上下文。查找(' JDBC/mysqlds ');连接conn=ds。GetConnection();conn . close();出去。println(' span style=' color : red;命名服务测试成功span’);} catch(NamingException e){ e . print stack trace();} catch(SQLException e){ e . printstacktrace();} % /body /html运行效果:
方法二:在雄猫的conf/server.xml中配置
打开雄猫的conf/server.xml文件,找到全局命名资源/全局命名资源节点,默认的内容如下
全局命名资源
资源名称=“用户数据库”授权=“容器”类型=“组织”。阿帕奇。卡特琳娜。用户数据库“描述=”可以更新和保存的用户数据库factory=' org。阿帕奇。卡特琳娜。用户。内存用户。内存userdabasefactory ' pathname=' conf/Tomcat-users。XML '/GlobalNamingResources在该节点中加入相关的池配置信息,如下
全局命名资源
资源名称=“用户数据库”授权=“容器”类型=“组织”。阿帕奇。卡特琳娜。用户数据库“描述=”可以更新和保存的用户数据库factory=' org。阿帕奇。卡特琳娜。用户。内存用户。内存userdabasefactory ' pathname=' conf/Tomcat-users。XML '/!-配置关系型数据库数据库的连接池,需要做的额外步骤是将关系型数据库的爪哇驱动类放到雄猫的解放运动目录下-资源名称=' JDBC/mysqlds ' auth='容器' type=' javax。SQL。数据源' username=' root ' password=' root ' Maxidle=' 30 ' MaxWait=' 10000 ' MaxActiVe=' 100 ' driverClassName=' com。MySQL。JDBC。驱动程序' URL=' JDBC : MySQL 3360//127。0 .0 .1:3306/db _ blog '/global naming ring在雄猫的conf/context.xml文件中的背景/语境节点中加入如下内容
资源链接名称=' JDBC/mysqlds '全局=' JDBC/mysqlds '类型=' javax。SQL。数据源“/然后在网项目中的网络信息目录下的web.xml中配置
资源参考
描述关系型数据库数据库连接池/description!-参考数据源名字,同雄猫中配置的资源节点中名字属性值jdbc/mysqlds '一致JDBC/mysqlds/RES-ref-name!-资源类型-RES-type javax . SQL . data source/RES-type RES-authContainer/RES-auth RES-sharing-scopesharbor/RES-sharing-scope/resource-ref同样配置好后,需要重新启动服务器,让配置生效。
方法三:在雄猫的conf/server.xml中配置虚拟目录时配置
在配置虚拟目录时,也就是在配置主配置文件下面的server.xml时,在语境标签内添加池配置。
在说该方法之前,先说一下,如何用雄猫配置虚拟目录
在tomcat\conf下server.xml中找到
主机名=' localhost ' appBase=' webapPS ' unpackWARs=' true ' autoDeploy=' true ' xmlValidation=' false ' xmlNamespaceAware=' false '/Host在其中添加:
上下文路径='/网站docBase='F:/myweb '可重新加载=' true '/上下文注意:
应用程序的路径或者是要改成你的项目目录。
小路为虚拟路径,访问时的路径,注意:一定要加"/"调试建议设置为0
可重新加载设置为真的。
这样重新启动雄猫
实例中如下配置
上下文路径='/网站DocBase=' d :/程序文件/Tomcat/Apache-Tomcat-6。0 .33/网络应用程序/iblog。“战争”可重新加载=' true '/上下文接下来添加池配置,如下
!-配置虚拟目录-
上下文路径='/网站DocBase=' d :/程序文件/Tomcat/Apache-Tomcat-6。0 .33/网络应用程序/iblog。“战争”可重新加载='true '资源名称='jdbc/mysqlds' auth='Container '类型='javax.sql.DataSource '用户名=“根”密码=' root ' Maxidle=' 30 ' MaxWait=' 10000 ' MaxActiVe=' 100 ' Driverclassname=' com。MySQL .启动服务器,测试,注意因为我们配置了小路值为"/网站",所以访问的路径应该为网站。如下图:
方法四:在网项目中的元信息目录下新建一个文件context.xml,写入配置
注意:是元信息目录下,不是网络信息目录下
?可扩展标记语言版本='1.0 '编码='utf-8 '?
上下文资源名称=' JDBC/mysqlds ' auth='容器' type=' javax。SQL。数据源' username=' root ' password=' root ' MaXidle=' 30 ' MaxWait=' 10000 ' MaxActiVe=' 100 ' driverClassName=' com。MySQL。JDBC。驱动程序' URL=' JDBC : MySQL 3360//127。0 .0 .1:3306/db _ blog ' loga bandlened='
版权声明:Tomcat数据库连接池配置方法综述是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。