在独立应用程序中释放数据库连接

时间:2013-08-26 11:35:04

标签: spring jpa shutdown

我正在使用Spring / JPA开发一个独立的应用程序,我正在尝试正确发布所使用的数据库资源。

在使用tomcat的Web应用程序中,我们关闭服务器,这样,我们让Tomcat管理资源。

但是当我在一个独立的应用程序中时,我必须要注意这一点,我使用 Runtime.getRuntime()。addShutdownHook 来“捕获”关闭事件并调用(( ClassPathXmlApplicationContext)context).close(); ,如下所示:

Runtime.getRuntime().addShutdownHook(new Thread() {
    @Override
    public void run() {
        ((ClassPathXmlApplicationContext) context).close();
    }

它可以工作但是如果一个线程正在使用连接,则堆栈跟踪中有一个例外。 我想知道是否还有其他选择?也许获取一个打开的事务列表并强制它们回滚?

1 个答案:

答案 0 :(得分:0)

我相信您需要实现类似this的内容,并且在您的destroy方法中,您将检索您的数据源并调用 close 方法或类似的方法。我还假设您在关闭应用程序时有一些事情要做。

我不能正确使用正确的方法名称,因为我不知道您使用的数据源是什么。