数据库网络错误后,UCP连接池无法创建连接

时间:2019-04-14 20:28:05

标签: oracle scala ucp

我在Scala应用程序中为Oracle数据库实现的Oracle通用连接池(UCP)出现问题。

在与数据库建立连接的情况下,它可以完美运行,但是当网络在有限的时间内出现问题(应用程序或数据库脱机)时,它显然无法创建连接虽然问题仍然存在,但是当应用程序可以再次ping数据库时,它就无法创建新问题。重新使应用程序正常工作的唯一方法是重新启动它。

我已经建立了一个用于管理连接的类,并使用以下方法创建池数据源:

private def createConnectionPool(
    connectionString: String,
    username: String,
    password: String
): PoolDataSource =
{
    val p = PoolDataSourceFactory.getPoolDataSource()
    p.setConnectionPoolName("main_ucp_pool")
    p.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource")
    p.setURL(connectionString)
    p.setUser(username)
    p.setPassword(password)

    p.setInitialPoolSize(5)
    p.setMinPoolSize(3)
    p.setMaxPoolSize(20)

    p
}

private lazy val pds = createConnectionPool('url', 'username', 'pass')

然后,每次需要数据库连接时,我都会通过以下方法调用来获取它:

pds.getConnection()

我是否丢失了代码中的某些内容?或者,即使在发生网络问题之后,调用getConnection方法时,池数据源是否也应重试建立与数据库的连接,这是真的吗?

换句话说,如果它在网络中断时未能创建连接,则第二次,如果应用程序现在可以ping数据库,那么必须建立连接吗?

0 个答案:

没有答案