Я работаю над автономным приложением с использованием Spring/JPA, и я пытаюсь правильно освободить используемые ресурсы базы данных.выпуск db соединений в автономном приложении
В веб-приложении, использующем tomcat, например, мы завершаем работу сервера, и таким образом мы позволяем Tomcat управлять ресурсами.
Но, как я нахожусь в автономное приложение, я должен позаботиться об этом, я использую Runtime.getRuntime(). AddShutdownHook «поймать» событие отключения и вызвать ((ClassPathXmlApplicationContext) контекст) .close();, что-то вроде этого:
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
((ClassPathXmlApplicationContext) context).close();
}
Он работает, но с исключением в StackTrace, если нить с помощью соединения. Мне интересно, есть ли другой вариант? Может быть, получить список открытых транзакций и заставить их откатиться?
Вы не указали версию Spring, которую используете, но, возможно, это может помочь http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans. HTML # бобы-завод-выключение –