会话超时是否也会终止数据源连接?

时间:2015-11-09 09:04:00

标签: java servlets datasource web.xml

我有一个java servlet应用程序,在web.xml中会话超时设置为35分钟。但是,有时应用程序会因以下错误而失败:

java.sql.SQLException: ORA-00028: your session has been killed

同样在web.xml中,数据源设置如下:

<resource-ref>
     <res-ref-name>jdbc/RemittancePDFMappedDS</res-ref-name>
     <res-type>javax.sql.DataSource</res-type>
     <res-auth>Container</res-auth>
</resource-ref>   

DBA已经确认他们没有杀死任何东西。这是一个多线程应用程序,但没有以编程方式杀死任何连接。我的问题是:当应用程序在35分钟后超时时,这是否也使数据源无效?要解决此问题,我们通常只需重新启动它,它会正常工作一段时间,直到再次出现相同的错误。

1 个答案:

答案 0 :(得分:0)

它不应该相关。 SQL异常是由于无法使用提供的信息确定的另一个原因引起的。

但是,您可以使用jndi-resources的功能来管理该问题。使用validationQuerytestOnBorrow属性检查您是否配置了数据源。

这样,您的连接池可以检查连接是否已关闭,然后重新打开它。由于您使用的是Oracle DB,因此可以使用此通用验证查询:

SELECT 1 FROM DUAL;

这不会解决导致数据库会话终止的问题,但会根据需要重新连接。