Крюк для запуска / выключения для Helidon MP / Microprofile? - PullRequest
0 голосов
/ 24 октября 2019

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

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

1 Ответ

1 голос
/ 24 октября 2019

Если вы используете 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 и может иметь любой уровень защиты.

...