Java JRE关闭应用程序的连接会崩溃吗?

时间:2012-05-21 06:30:13

标签: connection java

如果应用程序在没有关闭其活动连接的情况下崩溃或退出,Java JRE是否会关闭数据库连接?如果不是,数据库有责任超时这些连接吗?

据我所知,如果Java崩溃,那么数据库将需要超时所有打开的连接,因为没有其他工作可以完成。

修改 额外的想法。如果在Tomcat中部署的WAR崩溃,Tomcat服务器是否会清理打开的连接?

2 个答案:

答案 0 :(得分:2)

这真的取决于。

如果您的JRE本身崩溃,则可能无法关闭所有连接。如果只是您的应用程序崩溃,它可能能够在释放资源时关闭连接。根据我的经验,只要JRE本身不会死亡,大多数情况下似乎就是这种情况。最好的防御当然是正确的错误处理,并确保没有比所需更多的连接打开。

根据我的经验,最好在Tomcat中设置数据源,这样,即使您的应用程序崩溃,这也不是开放资源的问题。我非常喜欢让我的应用程序服务器尽可能多地处理资源管理,这样我就可以从有时冒险的代码中受到更多保护。

答案 1 :(得分:0)

大多数情况下,您的应用程序应该在任何正确的错误处理程序中关闭连接。我更喜欢在Tomcat中设置数据源,就像Ewald提到的那样。在那里,您可以定义最大连接数,以及context.xml中的超时时间。当您的应用程序堆叠太多连接时,它将释放它。