Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 Запуск метода перед остановкой Tomcat  [new]
Molasar
Member

Откуда:
Сообщений: 588
Всем привет!

Java 8, Spring 2.1.2, Tomcat 8.5.37

На Tomcat крутится приложение-сервис, которое нужно корректно завершать перед остановкой приложения (например, через Tomcat manager) или перед остановкой Tomcat.

Как можно в коде приложения определить, что дана команда на остановку приложения или Tomcat, чтобы можно было успеть вызвать метод у объекта и закрыть открытые сессии?
31 янв 19, 13:59    [21798775]     Ответить | Цитировать Сообщить модератору
 Re: Запуск метода перед остановкой Tomcat  [new]
alex55555
Member

Откуда:
Сообщений: 1976
Molasar
Как можно в коде приложения определить, что дана команда на остановку приложения или Tomcat, чтобы можно было успеть вызвать метод у объекта и закрыть открытые сессии?

Читаем про жизненный цикл приложения в спецификации сервлетов.
31 янв 19, 14:13    [21798791]     Ответить | Цитировать Сообщить модератору
 Re: Запуск метода перед остановкой Tomcat  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5055
Molasar,
@PreDestroy
31 янв 19, 14:13    [21798792]     Ответить | Цитировать Сообщить модератору
 Re: Запуск метода перед остановкой Tomcat  [new]
Molasar
Member

Откуда:
Сообщений: 588
Вот что мне нужно, но это на Java EE:
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class MyAppServletContextListener implements ServletContextListener{

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("ServletContextListener destroyed");                
    }

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("ServletContextListener started");
    }
    
}

а есть аналог на Spring?

Озверин
Molasar,
@PreDestroy
31 янв 19, 16:23    [21798944]     Ответить | Цитировать Сообщить модератору
 Re: Запуск метода перед остановкой Tomcat  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5055
Molasar, причем полный.
31 янв 19, 16:40    [21798968]     Ответить | Цитировать Сообщить модератору
 Re: Запуск метода перед остановкой Tomcat  [new]
Molasar
Member

Откуда:
Сообщений: 588
При остановке приложения в Tomcat все бины, созданные этим приложением будут уничтожаться?
А @PreDestroy будет вызываться перед уничтожением бина?

Озверин
Molasar,
@PreDestroy
1 фев 19, 10:03    [21799359]     Ответить | Цитировать Сообщить модератору
 Re: Запуск метода перед остановкой Tomcat  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5055
Molasar, создайте публичный метод, вставьте в него логгер события, задеплойте на томкат и остановите затем. Узнаете.
1 фев 19, 10:23    [21799374]     Ответить | Цитировать Сообщить модератору
 Re: Запуск метода перед остановкой Tomcat  [new]
SQL2008
Member

Откуда:
Сообщений: 3724
Molasar
Вот что мне нужно, но это на Java EE:
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class MyAppServletContextListener implements ServletContextListener{

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("ServletContextListener destroyed");                
    }

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("ServletContextListener started");
    }
    
}

а есть аналог на Spring?


У меня в проекте на Spring 4.0.1 это работает.
Tomcat тоже 5.37.
1 фев 19, 11:07    [21799421]     Ответить | Цитировать Сообщить модератору
 Re: Запуск метода перед остановкой Tomcat  [new]
SQL2008
Member

Откуда:
Сообщений: 3724
Ну конечно нужно в WEB.XML добавить
        <listener>
            <listener-class>имя.вашего.пакета.MyAppServletContextListener</listener-class>
        </listener>
1 фев 19, 11:11    [21799425]     Ответить | Цитировать Сообщить модератору
 Re: Запуск метода перед остановкой Tomcat  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 15471
SQL2008
Tomcat тоже 5.37.
???
1 фев 19, 12:09    [21799509]     Ответить | Цитировать Сообщить модератору
 Re: Запуск метода перед остановкой Tomcat  [new]
SQL2008
Member

Откуда:
Сообщений: 3724
вадя
SQL2008
Tomcat тоже 5.37.
???

Хотел написать Tomcat 8.5.37

:)
1 фев 19, 12:56    [21799581]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить