2

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

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

但是因为我在一个独立的应用程序中,所以我必须注意这一点,我使用Runtime.getRuntime().addShutdownHook来“捕获”关闭事件并调用((ClassPathXmlApplicationContext) context).close(); ,像这样:

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

它可以工作,但如果线程正在使用连接,则堆栈跟踪中会出现异常。我想知道是否还有其他选择?也许得到一个打开的交易列表并强制它们回滚?

4

1 回答 1

0

我相信你需要实现这样的东西在你的 destroy 方法中,你会检索你的数据源并调用close方法或类似的东西。我还假设您在关闭应用程序时有一些事情要做。

我无法为正确的方法名称提供帮助,因为我不知道您将什么用于数据源。

于 2014-04-04T03:23:36.093 回答