7

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

这就是规范所说的

连接等待超时

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

默认值:0(无超时)

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

4

2 回答 2

2

我认为默认值可能会因您使用的 Oracle 版本而异。一些信息是矛盾的,例如 Oracles“优化连接池行为”意味着默认值为 3 秒(11g?)而其他来源声明它是零,如问题中所述。

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

于 2009-03-30T20:50:18.457 回答
0

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

于 2009-03-30T21:35:53.790 回答