2013-08-26 2 views
2

Я работаю над автономным приложением с использованием Spring/JPA, и я пытаюсь правильно освободить используемые ресурсы базы данных.выпуск db соединений в автономном приложении

В веб-приложении, использующем tomcat, например, мы завершаем работу сервера, и таким образом мы позволяем Tomcat управлять ресурсами.

Но, как я нахожусь в автономное приложение, я должен позаботиться об этом, я использую Runtime.getRuntime(). AddShutdownHook «поймать» событие отключения и вызвать ((ClassPathXmlApplicationContext) контекст) .close();, что-то вроде этого:

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

Он работает, но с исключением в StackTrace, если нить с помощью соединения. Мне интересно, есть ли другой вариант? Может быть, получить список открытых транзакций и заставить их откатиться?

+0

Вы не указали версию Spring, которую используете, но, возможно, это может помочь http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans. HTML # бобы-завод-выключение –

ответ

0

Я считаю, что вам нужно будет реализовать что-то вроде this и внутри вашего метода уничтожения, вы получите свой источник данных и вызовите метод или что-то подобное. Я также предполагаю, что у вас есть несколько дел, когда вы завершаете свое приложение.

Я не могу помочь с правильным именем метода, поскольку я не знаю, что вы используете для своего источника данных.

Смежные вопросы