什么是数据库连接池?怎么配置tomcat的数据库连接池?
来源:互联网 发布:自然语言处理余弦算法 编辑:程序博客网 时间:2024/05/29 17:59
怎么设置数据库连接池?
数据连接池的简介:
背景:数据库连接是一种关键的、有限的、昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。
数据库连接池的优势:
1:连接池一般比直接连接更有优越性(它提高了性能的同时还保存了 宝贵的资源)
2:数据库池连接只在服务器启动时打开一次,执行其他数据库语句时就不会重新打开连接。
3:数据库连接池的密码账号数据库能被共享,从而增强了系统的安全性和可管理性。
第一步:
copy(复制)数据库连接的jar包到Tomcat的lib文件夹中
第二步:
找到tomcat 里面的conf文件夹
进入context.xml
吧下面
<Resource name="jdbc/EmployeeDB" auth="Container" type="javax.sql.DataSource" username="dbusername" password="dbpassword" driverClassName="org.hsql.jdbcDriver" url="jdbc:HypersonicSQL:database" maxTotal="8" maxIdle="4"/>
标签属性解释,注:
driverClassName——完全限定Java类名 要使用的JDBC驱动程序。(也就是普通连接里面DBHelper里面的driverClassName属性值)
username——数据库用户名传递给我们 JDBC驱动程序。
password——数据库密码传递给我们 JDBC驱动程序。
url——连接URL传递给我们的JDBC驱动程序。 (向后兼容性,该财产driverName也是公认的。也就是普通连接里面DBHelper里面的url属性值)
initialSize——最初的连接数 在池中创建池初始化。 默认值:0
maxTotal——最大连接数 可以从这个池分配在同一时间。 默认值:8
minIdle最小连接数 同时将空闲池。 默认值:0
maxIdle的最大连接数 同时可以空闲池。 默认值:8
maxWaitMillis——最大的毫秒数 池将等待(当没有可用的连接) 连接抛出异常之前返回。 默认值:1(无限)
一些额外的属性处理连接验证:
validationQuery- - - - - - SQL查询,可以使用的 验证连接池之前返回 应用程序。 如果指定的,这必须是一个SQL SELECT查询 至少语句返回一行。
validationQueryTimeout——在秒超时 为验证查询返回。 默认值:1(无限)
testOnBorrow-真或假:是否连接 应验证使用验证查询每一次吗 从池中借来的。 默认值:真正的
testOnReturn-真或假:是否连接 应验证使用验证查询每一次吗 返回到池中。 默认值:假
可选的驱逐者线程负责减少池 通过移除任何连接闲置很长一段时间。 驱逐者的 不尊重minIdle。 注意,您不需要 激活驱逐者线程池,如果你只想要缩小显示 的配置maxIdle财产。
驱逐者默认情况下是禁用的,可以使用配置 以下属性:
timeBetweenEvictionRunsMillis——的数量 驱逐者的毫秒之间的连续运行。 默认值:1(禁用)
numTestsPerEvictionRun——连接的数量 将检查在每个懒惰被驱逐者 驱逐者的运行。 默认值:3
minEvictableIdleTimeMillis——的空闲时间 毫秒之后,从池中连接可以删除 被驱逐者。 默认值:30 * 60 * 1000(30分钟)
testWhileIdle-真或假:是否连接 应该被驱逐者线程使用验证查询验证 坐在空闲池中。 默认值:假
另一个可选的功能是消除废弃的连接。 连接被称为废弃如果应用程序不返回它 池很长一段时间。 这类连接池可以关闭 从池中自动删除它们。 这是一个解决方案 应用程序连接泄漏。
放弃功能默认是禁用的,可以配置 使用以下属性:
removeAbandoned-真或假:是否 从池中删除废弃的连接。 默认值:假
removeAbandonedTimeout——的数量 秒后,借来的连接被认为是放弃了。 默认值:300
logAbandoned-真或假:是否日志 堆栈跟踪的应用程序代码被遗弃的一份声明 或连接。 这增加了严重的开销。 默认值:假
最后有各种属性,允许进一步的微调 池的行为:
defaultAutoCommit-真或假:违约 自动提交的由该池的连接状态。 默认值:真正的
defaultReadOnly-真或假:违约 只读状态的连接由该池。 默认值:假
defaultTransactionIsolation这个设置 默认的事务隔离级别。 可以是其中一个NONE,READ_COMMITTED,READ_UNCOMMITTED,REPEATABLE_READ,SERIALIZABLE。 默认值:没有默认设置
poolPreparedStatements-真或假:是否 池callablestatement preparedstatement。 默认值:假
maxOpenPreparedStatements——开放的最大数量 语句从语句池可以分配在同一时间。 默认值:1(无限)
defaultCatalog——默认的目录的名称。 默认值:未设置
connectionInitSqls——一个SQL语句列表 创建一个连接后运行一次。 单独的多个语句 由分号(;)。 默认值:没有声明
connectionProperties——特定的驱动程序列表 为创建连接属性传递给驱动程序。 每一个 属性是作为name=value多个属性 由分号(;)。 默认值:没有属性
accessToUnderlyingConnectionAllowed正确或错误:是否 访问底层连接是被允许的。 默认值:假
第二步:
配置web.xml
<resource-ref> <description> 配置描述内容 </description> <res-ref-name> 这里写刚刚配置context.xml里面的 Resource标签的 name值 </res-ref-name> <res-type> 这里写刚刚配置context.xml里面的 Resource标签的 type值 </res-type> <res-auth> 这里写刚刚配置context.xml里面的 Resource标签的 auth值 </res-auth></resource-ref>
tomcat里面的内容配置完成!
接下来就是使用数据库连接池!
1:我用的是创建一个DBHelper,然后调用DBHelper,使用数据库连接池
package com.wj.DBHelper;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import javax.naming.Context;import javax.sql.DataSource;public class DBHelper { public static Connection myConn(){ Connection conn=null; try { //实例化InitialContext对象 Context context = new InitialContext(); //进入java池中找/comp/env Context envContext=(Context)context.lookup("java:/comp/env"); //在根据name值进入数据库池中找jdbc/G160628DB的Source配置 DataSource dataSource=(DataSource)envContext.lookup("jdbc/G160628DB");//配置name值 //把从数据库里面拿出来的值复制给conn conn=dataSource.getConnection(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } //返回conn return conn; } /** * @author admin * 关闭连接的方法 **/ public static void myClose(Connection conn,PreparedStatement ps,ResultSet rs){ try { //如果 conn 不为空 并且 conn没有关闭 就关闭conn if(conn != null && !conn.isClosed()){ conn.close(); } //如果 ps 不为空 就关闭 ps if(ps != null){ ps.close(); } //如果 rs 不为空 就关闭 rs if(rs != null){ rs.close(); } } catch (Exception e) { e.printStackTrace(); } }}
注释:如果那个地方有错误,或是有改进:还请各位帮个忙指出来!谢谢!你们的吐槽将是我进步的空间!谢谢。
- 什么是数据库连接池?怎么配置tomcat的数据库连接池?
- 配置Tomcat的数据库连接池
- tomcat数据库连接池的配置
- Tomcat 数据库连接池的配置
- tomcat数据库连接池的配置
- Tomcat数据库连接池的配置
- Tomcat数据库连接池的配置
- Tomcat数据库连接池的配置
- tomcat配置数据库连接池
- 配置tomcat数据库连接池
- tomcat数据库连接池配置
- tomcat配置数据库连接池
- tomcat 数据库连接池配置
- Tomcat 数据库连接池配置
- tomcat数据库连接池配置!
- tomcat数据库连接池配置
- tomcat数据库连接池配置
- tomcat数据库连接池配置
- 牛刀小试
- 根据四个特征点求解相机位姿
- Struts2-Modeldriven接口用法
- 前端通用编码规范
- html中列表前的序号用带圆圈的数字表示及存在的问题
- 什么是数据库连接池?怎么配置tomcat的数据库连接池?
- 01-复杂度2 Maximum Subsequence Sum (25分)
- HDU 4569 Special equations(思维)——2013 ACM-ICPC长沙赛区全国邀请赛
- cef AutomatedBuildSetup
- [leetcode]598. Range Addition II
- 深入理解javascript原型和闭包(9)——简述【执行上下文】下
- web中鼠标的点击事件
- PHP实战之实现简单的分页
- 不同PNP求解算法性能测试