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