我使用Oracle的通用连接池。我参与这个计划
class Action {
static PoolDataSource initPool() {
PoolDataSource pds = PoolDataSourceFactory.getPoolDataSource();
pds.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource");
pds.setURL(".........");
pds.setUser("user");
pds.setPassword("pass");
pds.setInitialPoolSize(0);
return pds;
}
static final PoolDataSource pds = initPool();
void doAction() {
Connection connection = pds.getConnection();
..........
connection.close(); // ????
}
}您需要在connection.close()完成后调用doAction,还是整个池的工作意识都会丢失,那里的连接应该一直保持打开状态,直到它们自己在超时时关闭为止?
发布于 2018-02-23 15:21:20
是的医生把它们关起来。它实际上并没有关闭,而是返回到下一个getConnection()调用的连接池。
完整的文档在这里:01/java.112/e12265/connect.htm#CHDJCGGB
不再使用的借来的连接应该返回到池中,以便它们可以用于下一个连接请求。close方法用于关闭连接并自动将连接返回到池。close方法不会物理地从池中删除连接。 未关闭的借用连接仍然是借来的;后续的连接请求将导致在没有可用连接的情况下创建新连接。此行为可能导致创建许多连接,并可能影响系统性能。
https://stackoverflow.com/questions/48950760
复制相似问题