2

jt400 AS400JDBCDataSource (8.7) で HikariCP 接続プール (2.4.2) を使用しようとしています。

DataSource を直接構成すると、すべてが正常に機能し、接続を使用できます。

AS400JDBCDataSource ds = new AS400JDBCDataSource();
ds.setUser("user");
ds.setPassword("password");
ds.setServerName("serverName");
ds.setLibraries("libraries");

プロパティで HikariCP を設定すると

dataSourceClassName=com.ibm.as400.access.AS400JDBCDataSource
dataSource.user=user
dataSource.password=password
dataSource.libraries=libraries
dataSource.serverName=serverName

次のエラーが表示されます。

java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30008ms.
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:196)
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:148)
at com.zaxxer.hikari.pool.HikariPool.initializeConnections(HikariPool.java:519)
at com.zaxxer.hikari.pool.HikariPool.initializeConnections(HikariPool.java:535)
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:137)
at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:71)

PostgreSQL で同じことをすると、すべて問題ありません。

dataSourceClassName=org.postgresql.ds.PGSimpleDataSource
dataSource.user=user
dataSource.password=password
dataSource.databaseName=databaseName
dataSource.serverName=serverName
4

2 に答える 2

4

問題は、AS400JDBCDataSource で connectionTestQuery プロパティを設定する必要があることです。

dataSourceClassName=com.ibm.as400.access.AS400JDBCDataSource
connectionTestQuery=values 1
dataSource.user=user
dataSource.password=password
dataSource.libraries=libraries
dataSource.serverName=serverName

以下も機能することに注意してください。

driverClassName=com.ibm.as400.access.AS400JDBCDriver
jdbcUrl=jdbc:as400://serverName;libraries=libraries;naming=system;trace=false;prompt=false;errors=full
connectionTestQuery=values 1
username=username
password=password
于 2015-12-02T17:56:22.607 に答える