DBCP

SpringBoot-03

╄→гoц情女王★ 提交于 2019-12-03 22:09:08
SpringBoot数据访问 关系型数据库访问 1.连接池 dbcp2、c3p0、druid、HikariCP、proxool等 依赖连接池jar包、驱动的jar包 spring-boot-starter-jdbc默认会追加连接池(1.x tomcat-jdbc 2.x hikaricp) application.properties或者application.yml中配置 数据库连接参数 在启动类开启自动配置@SpringBootApplication DataSourceAutoConfiguration自动配置组件规则: 默认按创建Hikari,然后tomcat,dbcp2顺序执行 如果需要创建指定类型连接池,可以采用下面配置 spring.datasource.type=xxx,或者从jdbc中把hikaricpjar包删除调 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> <exclusions> <exclusion> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> </exclusion> </exclusions> <

SpringBoot-03

冷暖自知 提交于 2019-12-03 22:06:58
SpringBoot数据访问 关系型数据库访问 1.连接池 dbcp2、c3p0、druid、HikariCP、proxool等 依赖连接池jar包、驱动的jar包 spring-boot-starter-jdbc默认会追加连接池(1.x tomcat-jdbc 2.x hikaricp) application.properties或者application.yml中配置 数据库连接参数 在启动类开启自动配置@SpringBootApplication DataSourceAutoConfiguration自动配置组件规则: 默认按创建Hikari,然后tomcat,dbcp2顺序执行 如果需要创建指定类型连接池,可以采用下面配置 spring.datasource.type=xxx,或者从jdbc中把hikaricpjar包删除调 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> <exclusions> <exclusion> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> </exclusion> </exclusions> <

记一次dbcp数据库连接池问题分析

梦想的初衷 提交于 2019-12-03 14:48:21
最开始使用数据库连接池 DBCP 是在公司的项目中,使用 Spring+MyBatis 直接简单的设置了一些参数就拿来用了。因为配置的部分也是其他同事做好的,所以对于 DBCP 也没有深入了解过。 后来帮同学写一点服务器代码,没有用其他任何框架只是使用 DBCP 数据库连接池来管理数据库连接。在这个过程中发现程序直接执行到被挂起,但是程序并没有执行完。 我使用的dbcp数据库连接池的版本是1.x,下图是我依赖的包文件的示意图 图1 dbcp版本 下面的代码只是为了还原问题的情况的代码,这是比较糟糕的代码,请不要在实际中这样写。代码只是使用BasicDataSource获得连接,而不关闭连接。 import java.sql.Connection; import java.sql.SQLException; import org.apache.commons.dbcp.BasicDataSource; public class Start { private static BasicDataSource dbcp = new BasicDataSource(); static{ dbcp.setDriverClassName("com.mysql.jdbc.Driver"); dbcp.setUsername("tim"); dbcp.setPassword("123456");

DBCP连接池参数详解-2.4.0版本

最后都变了- 提交于 2019-12-03 08:21:26
BasicDataSource 配置参数 这些配置均在dbcp源码的BasicDataSource类的createPoolableConnectionFactory方法中使用和初始化。具体代码如下: protected PoolableConnectionFactory createPoolableConnectionFactory(final ConnectionFactory driverConnectionFactory) throws SQLException { PoolableConnectionFactory connectionFactory = null; try { connectionFactory = new PoolableConnectionFactory(driverConnectionFactory, ObjectNameWrapper.unwrap(registeredJmxObjectName)); connectionFactory.setValidationQuery(validationQuery); connectionFactory.setValidationQueryTimeout(validationQueryTimeoutSeconds); connectionFactory.setConnectionInitSql

数据库连接池DBCP和C3P0的使用

主宰稳场 提交于 2019-12-01 17:36:02
hibernate开发组推荐使用c3p0; spring开发组推荐使用dbcp; hibernate in action推荐使用c3p0; 一. dbcp 在数据库服务器 强行关闭连接或数据库服务重启后,无法reconnect 二. dbcp 连接池的创建速度优于c3p0,而c3p0的性能更加稳定 三. mysql8小时问题的解决方式不同: 众所周知,mysql在使用过程中,一个连接在8小时内无任何操作时,该连接会被断开,而连接池中的连接并不会感知该断开操作。dbcp和c3p0给出了不同的解决方案: dbcp需要添加两个配置参数: <set-property property="testOnBorrow" value="true"/> <set-property property="validationQuery" value="select 1"/> testOnBorrow的意思是从数据库连接池中取得连接时,对其的有效性进行检查 validationQuery 是用来检查的SQL语句,“select 1”执行较快,是一个不错的检测语句 c3p0需要添加一个参数: <property name="maxIdleTime"value="1800"/> maxIdleTime是连接池内连接的生存周期,使之小于mysql服务器上所设置的wait_timeout 的值 来源:

咕泡-装饰器 decorator 设计模式笔记

大城市里の小女人 提交于 2019-12-01 06:00:01
装饰器模式(Decorator) 应用场景:在我们的项目中遇到这样一个问题:我们的项目需要连接多个数据库,而且不同的客户在每 次访问中根据需要会去访问不同的数据库。我们以往在Spring 和Hibernate 框架中总是配置一个数据 源,因而SessionFactory 的DataSource 属性总是指向这个数据源并且恒定不变,所有DAO 在使用 SessionFactory 的时候都是通过这个数据源访问数据库。但是现在,由于项目的需要,我们的DAO 在 访问SessionFactory 的时候都不得不在多个数据源中不断切换, 问题就出现了: 如何让 SessionFactory 在执行数据持久化的时候,根据客户的需求能够动态切换不同的数据源?我们能不能 在Spring 的框架下通过少量修改得到解决?是否有什么设计模式可以利用呢? 首先想到在Spring 的ApplicationContext 中配置所有的DataSource。这些DataSource 可能是各 种不同类型的,比如不同的数据库:Oracle、SQL Server、MySQL 等,也可能是不同的数据源:比如 Apache 提供的org.apache.commons.dbcp.BasicDataSource 、Spring 提供的 org.springframework.jndi

HikariPool-1 - Connection is not available, request timed out after 30000ms for very tiny load server

戏子无情 提交于 2019-12-01 02:20:21
I have a small Java application for testing purposes. I have moved to hikari recently. What I notice is that I keep getting this error. java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms. java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms. at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:602) at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:195) at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:145)

Spring Boot+Spring Data Jpa+DBCP2数据源

夙愿已清 提交于 2019-11-30 05:44:31
Spring Data JPA是Spring Data的一个子项目,它通过提供基于JPA的Repository极大地减少了JPA作为数据访问方案的代码量。 pom.xml文件 父类pom <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.xiaolyuh</groupId> <artifactId>spring-boot-student</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <name>spring-boot-student</name> <!-- 添加Spring Boot的父类依赖,这样当前项目就是Spring Boot项目了。 spring-boot-starter-parent是一个特殊的starter,他用来

jdbc-internals-and-timeout-configuration

青春壹個敷衍的年華 提交于 2019-11-29 22:14:57
An application with a proper JDBC timeout can cut down the failure time. In this article we would like to talk about different kinds of timeout values and recommended timeout application methods when you import values from DBMS. Web Application Server became unresponsive after a DDos attack one day (This is a close reconstitution of an actual event.) The entire service did not work normally after a DDos attack. The network was disconnected because L4 was not working, which caused WAS to be inoperable as well. Shortly afterwards, the security team blocked all DDos attacks, and restored the

JNDI数据源配置

ⅰ亾dé卋堺 提交于 2019-11-28 20:57:42
http://tomcat.apache.org/tomcat-7.0-doc/jndi-resources-howto.html#JDBC_Data_Sources Tomcat的标准数据源资源工厂( org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory )的配置属性如下: driverClassName- 要使用的JDBC驱动程序的标准Java类名称。 用户名 -要传递给我们的JDBC驱动程序的数据库用户名。 password- 要传递给我们的JDBC驱动程序的数据库密码。 url- 要传递给我们的JDBC驱动程序的连接URL。(为了向后兼容, driverName 还可以识别该属性。) initialSize- 在池初始化期间将在池中创建的初始连接数。默认值:0 maxActive- 可以同时从此池分配的最大连接数。默认值:8 minIdle- 同时在此池中处于空闲状态的最小连接数。默认值:0 maxIdle- 可以同时在此池中处于空闲状态的最大连接数。默认值:8 maxWait- 抛出异常之前,池将等待(如果没有可用连接时)返回连接的最大毫秒数。默认值:-1(无限) 一些其他属性可处理连接验证: validationQuery- 池可用于在将连接返回给应用程序之前验证连接的SQL查询。如果指定