UCP算法的工作原理

时间:2018-02-23 15:04:49

标签: java oracle jdbc ucp

我使用Oracle的Universal连接池。我正在研究这个计划

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吗?或者整个游泳池的工作感觉是否会丢失,那里的连接应该保持打开状态,直到它们自己在超时时关闭?

1 个答案:

答案 0 :(得分:1)

TL; DR。是关闭他们。它实际上并没有关闭,它会返回连接池以进行下一次getConnection()调用。

完整的文档在这里: https://docs.oracle.com/cd/E11882_01/java.112/e12265/connect.htm#CHDJCGGB

  

应返回不再使用的借用连接   到游泳池,以便它们可用于下一次连接   请求。 close方法用于关闭连接和   自动返回到池的连接。关闭方法   不会从池中物理删除连接。

     

未被关闭的借用连接将继续借用;   后续的连接请求导致新连接   如果没有可用的连接,则创建。这种行为可能会导致很多   要创建的连接,可能会影响系统性能。