我正在使用Spring / JPA开发一个独立的应用程序,我正在尝试正确发布所使用的数据库资源。
在使用tomcat的Web应用程序中,我们关闭服务器,这样,我们让Tomcat管理资源。
但是当我在一个独立的应用程序中时,我必须要注意这一点,我使用 Runtime.getRuntime()。addShutdownHook 来“捕获”关闭事件并调用(( ClassPathXmlApplicationContext)context).close(); ,如下所示:
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
((ClassPathXmlApplicationContext) context).close();
}
它可以工作但是如果一个线程正在使用连接,则堆栈跟踪中有一个例外。 我想知道是否还有其他选择?也许获取一个打开的事务列表并强制它们回滚?
答案 0 :(得分:0)
我相信您需要实现类似this的内容,并且在您的destroy方法中,您将检索您的数据源并调用 close 方法或类似的方法。我还假设您在关闭应用程序时有一些事情要做。
我不能正确使用正确的方法名称,因为我不知道您使用的数据源是什么。