从JPA

时间:2017-09-14 22:00:32

标签: spring-data spring-data-jpa eclipselink

运行一个非常的工作(索引成千上万的文档与数据库查找),我收到此错误: java.sql.SQLException:ORA-02399:超出最大连接时间,您正在注销

在repository.findOne调用时发生错误。

该进程在tomcat下运行。

我需要做的(我认为)是重新登录Oracle并获得新连接。但是,JPA非常有效地隐藏了所有细节。 (还有春天更进一步)。我该怎么办?

1 个答案:

答案 0 :(得分:0)

如果你得到这样的超时,重新连接不是你的主要问题。你需要让你的超时足够长或你的交易足够短,不会触发超时。

重新连接的问题通常是透明地处理连接池,你肯定应该将它用于除测试之外的所有事情。但是,这不会解决您的直接问题,即连接已关闭并且您的事务已回滚。

<强>更新 问题似乎不是交易持续时间,而是连接持续时间。

如果确实如此,你应该与负责此超时的DBA交谈,因为恕我直言,因为它们在某段时间内处于打开状态而关闭所使用的连接是没有意义的。

您无法手动关闭或重新打开连接。这是连接池的任务。如果关闭从连接池获得的连接,则不是真正关闭它,而是将其返回到连接池。

相反,请将连接池配置为关闭连接并定期创建新连接。这是如何工作的取决于您正在使用的连接池。