使用java、springboot、IBM DB2ConnectionPoolDataSource执行多个查询后如何关闭ConnectionPool

问题描述 投票:0回答:1

您好,我有一个应用程序,其连接始终处于打开状态,每当我在浏览器中打开/刷新该应用程序时,就会增加计数。我正在使用 IBM DB2ConnectionPoolDataSource 来支持连接池。该应用程序运行在 springboot 项目中的嵌入式 tomcat 服务器上。任何有关如何关闭连接池的代码示例都值得赞赏。当我启动服务器时,我执行了多个查询。如果我执行 connection.close() ,当下一个查询准备好执行时,它会在连接关闭时给出 sqlException 。我想在执行所有查询后关闭连接。不确定代码的哪一部分我必须执行connection.close()。以下是我正在做的示例。提前致谢。

代码示例:

@Override
public Connection getConnection() throws SQLException{
Connection con = null;
try{
DB2ConnectionPoolDataSource pd = new DB2ConnectionPoolDataSource();
pd.setDriverType......
PooledConnection pc = new PooledConnection();
con = ((Db2PooledConnection)pc).getDb2Connection(.....);
catch (Exception e){
}
return con;
}

如果我在 catch 之后的finally 块中执行connection.close() ,我会收到一个sqlException,因为连接已关闭以执行下一个查询。

java spring-boot jdbc db2 connection-pooling
1个回答
0
投票

看起来您每次请求连接时都会创建一个新的数据源,而不是请求数据源的单个实例进行连接并让它处理池。

将数据源做成Bean并复用。

© www.soinside.com 2019 - 2024. All rights reserved.