在从池中获取连接时,我在 Spring Batch Unit 运行之一中遇到异常。我已经通过更改池的属性进行了诊断并尝试过,但仅在一项特定测试中仍然出现相同的错误。所有其他测试都运行良好。
连接池属性:
dataSource.maxPoolSize=5
dataSource.maxConnectionReuseTime.sec=45
dataSource.inactiveConnectionTimeout.sec=45
dataSource.minPoolSize=0
dataSource.initialPoolSize=1
获取连接代码:
private IDatabaseConnection getConnection( Connection con ) throws Exception {
// get connection
// oracle schema name is the user name
String schemaOwner = new JdbcTemplate( dataSource ).queryForObject( "select sys_context( 'userenv', 'current_schema' ) from dual", String.class );
IDatabaseConnection connection = new DatabaseConnection(con, schemaOwner.toUpperCase(Locale.ENGLISH));
DatabaseConfig config = connection.getConfig();
config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new Oracle10DataTypeFactory());
config.setProperty(DatabaseConfig.PROPERTY_TABLE_TYPE, new String[] {"TABLE", "VIEW","ALIAS", "SYNONYM"});
return connection;
}
protected void setUp() throws Exception {
Connection con = DataSourceUtils.getConnection( dataSource );
IDatabaseConnection iDatabaseConnection = getConnection( con );
DatabaseOperation.CLEAN_INSERT.execute(iDatabaseConnection, getDataSet());
DataSourceUtils.releaseConnection( con, dataSource );
}
异常消息:
org.springframework.jdbc.CannotGetJdbcConnectionException:无法获得 JDBC 连接;嵌套异常是 java.sql.SQLException:获取连接时发生异常:oracle.ucp.UniversalConnectionPoolException:生命周期状态无效。检查通用连接池的状态