Запускать метод из приложения war автоматически после запуска сервера tomcat - PullRequest
0 голосов
/ 08 апреля 2019

Проект - война с использованием местного кота

Мне интересно, как запустить метод автоматически после запуска сервера? Я знаю способы его запуска во время запуска сервера, такие как метод @Bean или во время инициализации контекста, но как я могу это сделать ПОСЛЕ успешного запуска сервера?

Ответы [ 3 ]

1 голос
/ 09 апреля 2019

В Tomcat вы можете использовать собственный LifecycleListener , принадлежащий Tomcat.Если вы зарегистрируете прослушиватель для AFTER_START_EVENT на хост-компоненте, вы должны получить то, что вы хотите.

Пример кода LifecycleListener:

package my.sourcecode;

import org.apache.catalina.Lifecycle;
import org.apache.catalina.LifecycleEvent;
import org.apache.catalina.LifecycleListener;

public class TomcatHostLifecycleListener implements LifecycleListener {

@Override
public void lifecycleEvent(LifecycleEvent lifeCE) {

    if (Lifecycle.AFTER_START_EVENT.equals(lifeCE.getType())) {
        System.out.println("************ TomcatHostLifecycleListener: After Start Event");
    }

}

}

Код должен быть помещен как JAR-Файл в глобальной папке lib Tomcat!

LifecycleListener должен быть зарегистрирован в Tomcats server.xml , в вашем случае внутри элемента host, потому что мы хотим слушать хостзапуск:

....
<Host ... >
    <Listener className="my.sourcecode.TomcatHostLifecycleListener"/>
    ....

См. Lifecycle-Doc для получения дополнительной документации.

(протестировано с Tomcat 8.5.30 и Java 11)

1 голос
/ 08 апреля 2019

Как я понял, вы используете Spring.Так что вы можете посмотреть на события контекста приложения Spring.Например, вы можете определить метод прослушивания событий следующим образом:

@EventListener
public void handleContextRefreshEvent(ContextStartedEvent ctxStartEvt) {
    System.out.println("Context Start Event received.");
}
0 голосов
/ 12 апреля 2019

Используя Spring Boot, добавление аннотации @PostConstruct к методу приводит к его запуску после запуска приложения Spring Boot.

...