【问题标题】:Oracle Datasource returning null connectionOracle 数据源返回空连接
【发布时间】:2010-10-16 11:33:59
【问题描述】:

连接请求数较多时,oracle数据源返回空连接。我启用了隐式缓存。oracle 规范说只有在设置 ConnectionWaitTimeout 时才返回 null。我没有在缓存属性中为 ConnectionWaitTimeout 设置值。

这就是规范所说的

连接等待超时

当请求连接并且已经有 MaxLimit 连接处于活动状态时,指定缓存行为。如果 ConnectionWaitTimeout 大于零,则每个连接请求都会等待指定的秒数或直到连接返回到缓存。如果超时前没有连接返回缓存,则连接请求返回null。

默认值:0(无超时)

数据源可能返回空连接的其他可能性是什么?

【问题讨论】:

    标签: java database oracle connection datasource


    【解决方案1】:

    我尝试设置此值。虽然文档说默认没有超时,但当我没有设置此属性时,数据源返回 null。当我明确指定连接正在等待的值时,即使值为 0 也会给我一个 null 连接。

    【讨论】:

      【解决方案2】:

      我认为默认值可能会根据您使用的 Oracle 版本而有所不同。有些信息是矛盾的,例如Oracles "Optimizing Connection Pool Behavior" 暗示默认值为 3 秒(11g?),而其他来源则表明它为零,如问题中所述。

      我建议将其明确设置为零,看看行为是否仍然表现出来。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-12-20
        • 2018-03-24
        • 2019-06-12
        • 1970-01-01
        • 2017-02-20
        • 1970-01-01
        • 2012-04-19
        相关资源
        最近更新 更多