Слушайте, как закрывается веб-приложение Vaadin. Каков конечный эквивалент жизненного цикла класса VaadinServiceInitListener? - PullRequest
0 голосов
/ 21 сентября 2019

Когда запускается веб-приложение Vaadin Flow , мы можем зарегистрировать нашу реализацию VaadinServiceInitListener для автоматического создания экземпляра через SPI .В этом слушателе мы можем реализовать метод serviceInit, который получает ServiceInitEvent при запуске веб-приложения.Этот процесс хорошо объяснен в руководстве .

➥ Что эквивалентно закрытию веб-приложения?

➥ Где можно выполнять разборку и очистку, когда заканчивается приложение Vaadin?

Я знаю, как это сделать в Java / Jakarta Servlet уровень, под Ваадином.Мы пишем класс, реализующий интерфейс ServletContextListener.В этом классе мы реализуем метод contextInitialized, который вызывается при запуске веб-приложения.И мы реализуем метод contextDestroyed при выходе из веб-приложения.Поскольку Ваадин предлагает абстракцию этого для запуска, я подумал, что, возможно, Ваадин также предлагает абстракцию для выхода.

1 Ответ

2 голосов
/ 23 сентября 2019

Нет никакого специального SPI для прослушивания отключений.Вместо этого вы можете использовать тот же SPI VaadinServiceInitListener и через него зарегистрировать ServiceDestroyListener с экземпляром VaadinService.

Таким образом, код для этого будет выглядеть примерно так:

public class MyServiceListener implements VaadinServiceInitListener {
  @Override
  public void serviceInit(ServiceInitEvent event) {
    VaadinService service = event.getSource();
    service.addServiceDestroyListener(destroyEvent -> {
      System.out.println("Destroy event for service " + destroyEvent.getSource());
    });
  }
}
...