标签: hikaricp

如何在我的application.properties文件中的Spring Boot应用程序中配置HikariCP?

我正在尝试在我的Spring Boot(1.2.0.M1)应用程序中设置HikariCP,因此我可以使用它来代替Tomcat DBCP进行测试.我想在我的application.properties文件中配置连接池,就像我在使用Tomcat一样,但我无法弄清楚我应该怎么做.我发现的所有示例都显示了JavaConfig样式,或者使用单独的HikariCP属性文件.有人可以帮我弄清楚在application.properties中配置它的属性名吗?我还想从使用driverClassName方法切换到DataSourceClassName方法,因为它看起来更干净,建议使用.这在我的application.properties文件中也可以吗?

这是我对Tomcat DBCP的看法(只是一些基本的配置,没有完全刷新)

spring.datasource.validation-query=SELECT 1
spring.datasource.max-active=10
spring.datasource.max-idle=8
spring.datasource.min-idle=8
spring.datasource.initial-size=5
spring.datasource.test-on-borrow=true
spring.datasource.test-on-return=true
Run Code Online (Sandbox Code Playgroud)

我目前正在使用driverClassName和jdbc url来建立连接:

spring.datasource.url=jdbc:mysql://localhost:3306/myDb
spring.datasource.driverClassName=com.mysql.jdbc.Driver
Run Code Online (Sandbox Code Playgroud)

java spring spring-boot hikaricp

69
推荐指数
12
解决办法
16万
查看次数

HikariCP - 连接不可用

我们的项目中有Spring-boot/Hibernate/PostgreSQL应用程序,并使用Hikari作为连接池.我们继续遇到以下问题:几个小时后,活动连接数量增长到极限,我们得到这样的错误(完整堆栈跟踪在问题的最后):

Caused by: java.sql.SQLTransientConnectionException: HikariPool-0 - Connection is not available, request timed out after 30000ms.
    at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:213) ~[HikariCP-2.4.1.jar:na]
    at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:163) ~[HikariCP-2.4.1.jar:na]
    at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:85) ~[HikariCP-2.4.1.jar:na]
    at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:139) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
    at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:380) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
    at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:228) ~[hibernate-core-4.3.6.Final.jar:4.3.6.Final]
    ... 126 common frames omitted
Run Code Online (Sandbox Code Playgroud)

这是版本信息:

Spring-boot version:   1.2.3.RELEASE
HikariCP version:      2.4.1
Hibernate version:     4.3.6.Final
Postgresql jdbc:       9.3-1102-jdbc41
Server version:        Apache Tomcat/8.0.23
JVM Version:           1.8.0_45-b14
Run Code Online (Sandbox Code Playgroud)

JPA/Hibernate配置:

jpa:
    database-platform: org.hibernate.dialect.PostgreSQL82Dialect
    database: POSTGRESQL
    openInView: false
    show_sql: false
    generate-ddl: false
    hibernate:
        ddl-auto: none
        naming-strategy: org.hibernate.cfg.EJB3NamingStrategy
    properties:
        hibernate.cache.use_second_level_cache: true
        hibernate.cache.use_query_cache: false …
Run Code Online (Sandbox Code Playgroud)

postgresql hibernate spring-boot hikaricp

47
推荐指数
4
解决办法
6万
查看次数

如何使用Spring为HikariCP设置数据源?

嗨,我正在尝试使用HikariCP与Spring连接池.我正在使用jdbcTempLate和JdbcdaoSupport.
这是我的数据源的spring配置文件:

<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource">
    <property name="dataSourceClassName" value="oracle.jdbc.driver.OracleDriver"/>
    <property name="dataSource.url" value="jdbc:oracle:thin:@localhost:1521:XE"/>
    <property name="dataSource.user" value="username"/>
    <property name="dataSource.password" value="password"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

但不幸的是,生成以下错误消息:

Cannot resolve reference to bean 'dataSource' while setting bean property 'dataSource'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in ServletContext resource [/WEB-INF/dispatcher-servlet.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.zaxxer.hikari.HikariDataSource]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.zaxxer.hikari.HikariDataSource.<init>()
Run Code Online (Sandbox Code Playgroud)

谁能告诉我如何解决这个问题?

spring jdbc spring-jdbc jdbctemplate hikaricp

36
推荐指数
4
解决办法
10万
查看次数

播放应用程序在空闲状态下死机,重新启动新请求?

我正在使用HiknateCp,Hibernate和我在java中的playframework应用程序.在几分钟的空闲状态之后,似乎播放应用程序死了,当它获得新请求时它再次启动.有时我也看到Db持久性错误,其中sessionfactory不可用,我认为这是此问题的副作用.为什么应用程序在空闲状态下死机,我可以将它配置为不这样做吗?

在几分钟的空闲时间内,每次新请求后,我都会得到以下日志 -

[info] application - Application shutdown...
[info] application - Stopping HikariCP connection pool...
[info] application - Starting HikariCP connection pool...
Run Code Online (Sandbox Code Playgroud)

Persistence.xml: -

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
             version="2.0">

    <persistence-unit name="defaultPersistenceUnit" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/> 
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.format_sql" value="true"/>
            <property name="hibernate.use_sql_comments" value="true"/>
            <property name="hibernate.logSql" value="true"/>            
            <property name="hibernate.connection.provider_class" value="com.zaxxer.hikari.hibernate.HikariConnectionProvider"/>
            <property name="hibernate.hikari.dataSourceClassName" value="com.impossibl.postgres.jdbc.PGDataSource"/>
        </properties>
    </persistence-unit>

</persistence>
Run Code Online (Sandbox Code Playgroud)

Application.conf: -

# JPA configuration
# ~~~~~
# You can declare as many Ebean servers as you want.
# By convention, …
Run Code Online (Sandbox Code Playgroud)

java hibernate playframework hikaricp playframework-2.3

25
推荐指数
1
解决办法
773
查看次数

HikariPool-1 - 由于 SQLSTATE(08006)、ErrorCode(0),连接被标记为损坏

当我们使用 SSL 证书设置 PostgreSQL 服务器后,我们经常会收到此错误。这种情况发生在与数据库有大量交互的流程上(更新大量条目/插入)

HikariPool-1 - Connection marked as broken because of SQLSTATE(08006), ErrorCode(0)
j.n.SocketException: Connection reset by peer (Write failed)
    at j.n.SocketOutputStream.socketWrite0(SocketOutputStream.java)
    at j.n.SocketOutputStream.socketWrite(SocketOutputStream.java:110)
    at j.n.SocketOutputStream.write(SocketOutpu`enter code here`tStream.java:150)
    at s.s.s.SSLSocketOutputRecord.deliver(SSLSocketOutputRecord.java:320)
    at s.s.s.SSLSocketImpl$AppOutputStream.write(SSLSocketImpl.java:983)
    ... 63 common frames omitted
Wrapped by: j.n.s.SSLProtocolException: Connection reset by peer (Write failed)
    at s.security.ssl.Alert.createSSLException(Alert.java:126)
    at s.s.s.TransportContext.fatal(TransportContext.java:321)
    at s.s.s.TransportContext.fatal(TransportContext.java:264)
    at s.s.s.TransportContext.fatal(TransportContext.java:259)
    at s.s.s.SSLSocketImpl$AppOutputStream.write(SSLSocketImpl.java:988)
    at j.i.BufferedOutputStream.write(BufferedOutputStream.java:123)
    at j.i.FilterOutputStream.write(FilterOutputStream.java:108)
    at o.p.core.PGStream.send(PGStream.java:252)
    at o.p.c.v.QueryExecutorImpl.sendParse(QueryExecutorImpl.java:1440)
    at o.p.c.v.QueryExecutorImpl.sendOneQuery(QueryExecutorImpl.java:1767)
    at o.p.c.v.QueryExecutorImpl.sendQuery(QueryExecutorImpl.java:1328)
    at o.p.c.v.QueryExecutorImpl.execute(QueryExecutorImpl.java:300)
    ... 56 common frames omitted
Wrapped by: o.p.u.PSQLException: …
Run Code Online (Sandbox Code Playgroud)

postgresql hikaricp

22
推荐指数
2
解决办法
4万
查看次数

日志警告:检测到线程饥饿或时钟跳跃(管家delta = springHikariConnectionPool)

我正在使用HikariCP 2.4.6并在Tomcat 8启动时收到一条警告消息:

01-Aug-2016 11:18:01.599 INFO [RMI TCP Connection(4)-127.0.0.1] org.apache.catalina.core.ApplicationContext.log Initializing Spring FrameworkServlet 'Spring MVC Dispatcher Servlet'
[2016-08-01 11:18:01,654] Artifact blueberry:war exploded: Artifact is deployed successfully
[2016-08-01 11:18:01,655] Artifact blueberry:war exploded: Deploy took 33,985 milliseconds
Aug 01 2016 11:26:52.802 AM [DEV] (HikariPool.java:614)
WARN : com.zaxxer.hikari.pool.HikariPool - 9m13s102ms - Thread starvation or clock leap detected (housekeeper delta=springHikariConnectionPool).
Run Code Online (Sandbox Code Playgroud)

我没有看到任何其他错误或从DB读取/写入的问题.这是值得关注的吗?我试着四处寻找,但没有运气.

我们还使用Hibernate 4.3.8.Final over MySQL 5和MySQL 5.1.39连接器与Spring 4.1.0.RELEASE.我们正在努力升级到Hibernate 5,看看它是否会消失,但不知道这是否重要.

hikaricp

21
推荐指数
6
解决办法
2万
查看次数

Spring 重试连接,直到数据源可用

我有一个 docker-compose 设置来启动我的 SpringBoot 应用程序和一个 MySQL 数据库。如果数据库先启动,那么我的应用程序可以成功连接。但是如果我的应用程序先启动,还没有数据库存在,所以应用程序抛出以下异常并退出:

app_1       | 2018-05-27 14:15:03.415  INFO 1 --- [           main]
com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
app_1       | 2018-05-27 14:15:06.770 ERROR 1 --- [           main]
com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - Exception during pool initialization
app_1       | com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:
Communications link failure
Run Code Online (Sandbox Code Playgroud)

我可以编辑我的 docker-compose 文件以确保在应用程序启动之前数据库始终处于启动状态,但我希望应用程序能够自己处理这种情况,而不是在无法到达数据库地址时立即退出。

有多种方法可以在 application.properties 文件中配置数据源,以使应用程序重新连接到数据库,如此此处所述。但这不适用于到数据源的启动连接。

如何让我的 SpringBoot 应用程序在启动时以给定的时间间隔重试连接到数据库,直到它成功连接到数据库?

mysql spring spring-boot hikaricp docker-compose

21
推荐指数
2
解决办法
9325
查看次数

HikariCP Postgresql驱动程序声称不接受JDBC URL

我已将我的应用程序推送到cloudfoundry.但是每次我连接到我的postgresql/elephant sql时都会收到此错误

 Driver org.postgresql.Driver claims to not accept JDBC URL jdbc:postgres://cwkqmdql:SsVqwdLxQObgaJAYu68O-8gTY1VmS9LX@pellefant.db.elephantsql.com:5432/cwkqmdql/
Run Code Online (Sandbox Code Playgroud)

有什么我错过的吗?

java postgresql jdbc cloud-foundry hikaricp

20
推荐指数
3
解决办法
3万
查看次数

Scala/Slick,"等待连接20000ms后超时"错误

下面的代码块一直在抛出错误.

  Timeout after 20000ms of waiting for a connection.","stackTrace":[{"file":"BaseHikariPool.java","line":228,"className":"com.zaxxer.hikari.pool.BaseHikariPool","method":"getConnection"
Run Code Online (Sandbox Code Playgroud)

此外,我的数据库访问看起来太慢,xs.map()的每个元素大约需要1秒.下面,getFutureItem()调用db.run().

xs.map{ x => 
    val item: Future[List[Sometype], List(Tables.myRow)] = getFutureItem(x)         
    Await.valueAfter(item, 100.seconds) match {
        case Some(i) => i
        case None => println("Timeout getting items after 100 seconds")
    }
}
Run Code Online (Sandbox Code Playgroud)

Slick会在每次迭代"x"值时记录此信息:

[akka.actor.default-dispatcher-3] [akka://user/IO-HTTP/listener-0/24] Connection was PeerClosed, awaiting TcpConnection termination...
[akka.actor.default-dispatcher-3] [akka://user/IO-HTTP/listener-0/24] TcpConnection terminated, stopping
[akka.actor.default-dispatcher-3] [akka://system/IO-TCP/selectors/$a/0] New connection accepted
[akka.actor.default-dispatcher-7] [akka://user/IO-HTTP/listener-0/25] Dispatching POST request to http://localhost:8080/progress to handler Actor[akka://system/IO-TCP/selectors/$a/26#-934408297]
Run Code Online (Sandbox Code Playgroud)

我的配置:

"com.zaxxer" % "HikariCP" % "2.3.2"

default_db {
  url = ...
  user = …
Run Code Online (Sandbox Code Playgroud)

mysql scala sbt slick hikaricp

19
推荐指数
1
解决办法
2547
查看次数

无法获取 JDBC 连接

我有一个带有 Hibernate 和 Hikari DataSource 的 Spring Boot 项目。如果我有一些注入 SessionFactory 对象的功能来获取会话对象,那么几天后我对与数据库操作相关的任何方法都有这样的例外(只有重新启动才能解决这个问题):

org.springframework.transaction.CannotCreateTransactionException: 
Could not open JPA EntityManager for transaction; nested exception is 
javax.persistence.PersistenceException: 
org.hibernate.exception.JDBCConnectionException: Unable to acquire JDBC Connection at
......
Caused by: java.sql.SQLTransientConnectionException: HikariPool-1 - 
Connection is not available, request timed out after 30001ms.
Run Code Online (Sandbox Code Playgroud)

似乎手动使用会话会导致此问题。(我有类似的项目,具有相同的配置和功能,但没有注入 SessionFactory 和 Session ......我根本没有这样的问题)

应用程序.yaml :

spring:
  jpa:
    properties:
      hibernate:
        dialect : org.hibernate.dialect.PostgreSQLDialect
        current_session_context_class: org.springframework.orm.hibernate5.SpringSessionContext
Run Code Online (Sandbox Code Playgroud)

数据源配置

@EnableJpaRepositories("com.my.project.config")
@Configuration
public class DataSourceConfig {

    @Inject
    private AppProperties properties;

    @Bean(name = "dataSource")
    public DataSource dataSource() {
        AppProperties.DatabaseProperties …
Run Code Online (Sandbox Code Playgroud)

hibernate spring-boot hikaricp

19
推荐指数
2
解决办法
8万
查看次数