我正在研究中型应用程序,我们在其中使用JDBC / Hibernate与数据库进行通信。 与PostgreSQL数据库的连接是使用DataSource建立的。 当我没有明确关闭连接时,使用多个用户登录时出现异常“ 30000ms后连接超时”。 当我关闭连接时,我会因为“由于SQLSTATE(08003),ErrorCode(0)而被标记为断开”
试图更改配置。已使用同步块。
Connection connection = null;
DatabaseMetaData databaseMetaData = null;
try{
connection = ((SessionFactoryImpl) factory).getConnectionProvider().getConnection();
databaseMetaData = connection.getMetaData();
}catch(SQLException exception){
exception.printStackTrace();
}catch (Exception exception) {
exception.printStackTrace();
}finally{
if(connection != null && !connection.isClosed()){
connection.close();
}
}
return databaseMetaData;
databaseMetaData = connection.getMetaData()
导致以下原因
Connection org.postgresql.jdbc.PgConnection@49a6ab0f marked as broken because of SQLSTATE(08003), ErrorCode(0) org.postgresql.util.PSQLException: This connection has been closed. at org.postgresql.jdbc.PgConnection.checkClosed(PgConnection.java:767)
at org.postgresql.jdbc.PgConnection.getMetaData(PgConnection.java:1220)
at com.zaxxer.hikari.pool.HikariProxyConnection.getMetaData(HikariProxyConnection.java)
at com.acustream.dao.hibernate.audit.AuditDAO.getMetaData(AuditDAO.java:56)
at com.acustream.service.SystemServiceImpl.getServerProperties(SystemServiceImpl.java:122)