我试图将HikariCP连接池(2.4.2)与jt400 AS400JDBCDataSource(8.7)一起使用。
当我直接配置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
答案 0 :(得分:3)
问题是我必须使用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
答案 1 :(得分:0)
static DataSource dataSource() {
HikariConfig dataSourceConfig = new HikariConfig();
dataSourceConfig.setDriverClassName("com.ibm.as400.access.AS400JDBCDriver");
dataSourceConfig.setJdbcUrl("jdbc:as400://+serverIP+;prompt=false");
dataSourceConfig.setUsername(username);
dataSourceConfig.setPassword(password);
return new HikariDataSource(dataSourceConfig);
}
在主要方法中:
DataSource dataSource = dataSource();
conn = dataSource.getConnection();
在上方或下方
使用AS400JDBCDataSource AS400DataSource = new AS400JDBCDataSource();
AS400DataSource.setUser(userName);
AS400DataSource.setPassword(password);
AS400DataSource.setServerName(host);
DataSource dataSource = AS400DataSource ;
conn = dataSource.getConnection();