2015-12-02 122 views
1

我正在試圖使用HtariCP連接池(2.4.2)和jt400 AS400JDBCDataSource(8.7)。如何使用jt400配置HikariCP AS400JDBCDataSource

當我直接配置數據源時,一切正常,我可以使用連接。

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:

回答

3

問題是我mus使用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