PlayFramework 2.5:HikariCP 忽略 application.conf 中的一些(但不是全部)设置

PlayFramework 2.5: HikariCP ignores some (but not all) settings from application.conf

我对 PlayFramework 2.5 中 HikariCP 的配置有点困惑。

我将其添加到我的 application.conf 文件中:

play.db {
  # The combination of these two settings results in "db.default" as the
  # default JDBC pool:
  config = "db"
  default = "default"  
  # Play uses HikariCP as the default connection pool.  You can override
  # settings by changing the prototype:
  prototype {
    hikaricp.maximumPoolSize = 30
    hikaricp.connectionTimeout = 5 seconds
    hikaticp.maxLifetime = 10 seconds
    hikaticp.idleTimeout = 5 seconds
  }
}

db.default.driver=org.postgresql.Driver
db.default.url=${?JDBC_DATABASE_URL}
db.default.username=${?DATABASE_USERNAME}
db.default.password=${?DATABASE_PASSWORD}

效果很好。我连接到数据库并可以提交查询和所有。我的问题是,只使用了一部分 HikariCP 设置。在应用程序开始时,我捕获了使用的 HikariCP 参数:

[ 2017-02-23 11:12:58,413 ] [info] application - Creating Pool for datasource 'default'
[ 2017-02-23 11:12:58,424 ] [debug] c.z.h.HikariConfig - HikariPool-1 - configuration:
[ 2017-02-23 11:12:58,430 ] [debug] c.z.h.HikariConfig - allowPoolSuspension.............false
[ 2017-02-23 11:12:58,431 ] [debug] c.z.h.HikariConfig - autoCommit......................true
[ 2017-02-23 11:12:58,431 ] [debug] c.z.h.HikariConfig - catalog.........................null
[ 2017-02-23 11:12:58,431 ] [debug] c.z.h.HikariConfig - connectionInitSql...............null
[ 2017-02-23 11:12:58,431 ] [debug] c.z.h.HikariConfig - connectionTestQuery.............null
[ 2017-02-23 11:12:58,431 ] [debug] c.z.h.HikariConfig - connectionTimeout...............5000
[ 2017-02-23 11:12:58,431 ] [debug] c.z.h.HikariConfig - dataSource......................null
[ 2017-02-23 11:12:58,431 ] [debug] c.z.h.HikariConfig - dataSourceClassName.............null
[ 2017-02-23 11:12:58,431 ] [debug] c.z.h.HikariConfig - dataSourceJNDI..................null
[ 2017-02-23 11:12:58,431 ] [debug] c.z.h.HikariConfig - dataSourceProperties............{password=<masked>}
[ 2017-02-23 11:12:58,431 ] [debug] c.z.h.HikariConfig - driverClassName................."org.postgresql.Driver"
[ 2017-02-23 11:12:58,431 ] [debug] c.z.h.HikariConfig - healthCheckProperties...........{}
[ 2017-02-23 11:12:58,431 ] [debug] c.z.h.HikariConfig - healthCheckRegistry.............null
[ 2017-02-23 11:12:58,431 ] [debug] c.z.h.HikariConfig - idleTimeout.....................600000
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - initializationFailFast..........true
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - isolateInternalQueries..........false
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - jdbc4ConnectionTest.............false
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - jdbcUrl........................."XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - leakDetectionThreshold..........0
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - maxLifetime.....................1800000
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - maximumPoolSize.................30
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - metricRegistry..................null
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - metricsTrackerFactory...........null
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - minimumIdle.....................30
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - password........................<masked>
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - poolName........................"HikariPool-1"
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - readOnly........................false
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - registerMbeans..................false
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - scheduledExecutorService........null
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - threadFactory...................null
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - transactionIsolation............null
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - username........................"XXXXXXXXXXXXXXXX"
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - validationTimeout...............5000

maximumPoolSizeconnectionTimeout 的值与 application.conf 中的设置相同。但是 maxLifetimeidleTimeout 的值将被忽略并设置为其他值。

application.conf 的语法是否在某些地方有误,我没有看到错误?

它们很小,尽量设置为 5 分钟左右。

现在您必须在类似于

的日志消息中看到
maxLifetime is less than 30000ms, using default 1800000ms.

HikariCP来源的代码:

LOGGER.warn("{} - maxLifetime is less than 30000ms, setting to default {}ms.", poolName, MAX_LIFETIME);
...
LOGGER.warn("{} - idleTimeout is less than 10000ms, setting to default {}ms.", poolName, IDLE_TIMEOUT);