Крючок запуска / выключения для Helidon MP / Microprofile?

Я разрабатываю приложение Microservice с Helidon MP. Пока что мой опыт потрясающий. Но в итоге я ищу ловушку запуска / завершения работы с Helidon MP. Пытался найти через поиск и Helidon Javadoc. Но я не могу найти ничего полезного.

Есть ли у нас такая функциональность в Helidon MP / Microprofile?

1 ответ

Решение

Если вы используете Helidon MP, значит, вы используете CDI 2.0 под прикрытием. Итак, этот вопрос сводится к следующему: "Есть ли способ получить уведомление, когда контейнер CDI появляется и когда он выходит из строя?"

Если у вас есть компонент CDI (обычно что-то аннотируется @ApplicationScoped или @Dependent или @RequestScoped), то вы можете добавить к нему метод наблюдателя, который уведомляется, когда контекст обозначается определенной аннотацией области (например, ApplicationScoped) инициализируется или уничтожается. Инициализация области приложения - это в значительной степени то, что вам нужно, поскольку это примерно эквивалентно "при запуске приложения", поэтому вот как вы бы сделали это в любом приложении CDI (включая Helidon MP):

import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.event.Initialized;
import javax.enterprise.event.Observes;

private final void onStartup(@Observes @Initialized(ApplicationScoped.class) final Object event) {
  // Do what you want; the CDI container has come up and everything
  // is open for business
}

Если вы хотите знать прямо перед тем, как что-то пойдет не так, сделайте следующее:

private final void rightBeforeShutdown(@Observes @BeforeDestroyed(ApplicationScoped.class) final Object event) {
  // Do what you want; the CDI container is just about to go down
}

Обратите внимание, что, как описано в спецификации, методы наблюдателя могут называться как угодно, должен иметь один параметр, помеченный @Observes, должен вернуться void и может иметь любой уровень защиты.

Другие вопросы по тегам