【发布时间】:2013-08-26 11:35:04
【问题描述】:
我正在使用 Spring/JPA 开发一个独立的应用程序,并且我正在尝试正确释放所使用的数据库资源。
例如,在一个使用 tomcat 的 Web 应用程序中,我们关闭服务器,这样我们就让 Tomcat 管理资源。
但是由于我在一个独立的应用程序中,我必须注意这一点,我使用 Runtime.getRuntime().addShutdownHook 来“捕捉”关闭事件并调用 (( ClassPathXmlApplicationContext) context).close();,类似这样:
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
((ClassPathXmlApplicationContext) context).close();
}
如果线程正在使用连接,它可以工作,但堆栈跟踪中会出现异常。 我想知道是否还有其他选择?也许得到一个打开的事务列表并强制它们回滚?
【问题讨论】:
-
您没有指定您正在使用的 Spring 版本,但这可能会有所帮助static.springsource.org/spring/docs/3.0.x/…