CDI / Weld: отключить позднюю инициализацию / вызов @PostConstruct - PullRequest
2 голосов
/ 06 декабря 2011

У меня есть приложение CDI / Weld, работающее с Hibernate и JSF 2. в Jetty.

Мне нужно выполнить некоторую инициализацию после запуска сервера Jetty.Я делаю это в методе @PostConstruct на компоненте @ApplicationScoped, но он не вызывается до тех пор, пока в приложение не будет отправлен запрос.Я не могу дождаться этого.

Я пытался выяснить, есть ли какой-нибудь способ подключиться к жизненному циклу приложения через Weld, но я не смог ничего найти.

Может кто-нибудь помочь мне с этим, пожалуйста

Ответы [ 3 ]

4 голосов
/ 10 июля 2013

В Java EE 7 / CDI 1.1 / Weld 2.0 вы можете наблюдать событие ServletContext @Initialized (ApplicationScoped.class).Это приведет к тому, что экземпляр вашего компонента будет создан с нетерпением.

2 голосов
/ 06 декабря 2011

Как насчет прослушивателя контекста сервлета?Инъекция должна хорошо работать в тех случаях, когда вам нужно что-то получить.Это также зависит от того, какую инициализацию вам нужно сделать.Могут быть вещи, к которым вы не сможете получить доступ, такие как bean-объекты области запроса или разговора.

0 голосов
/ 28 декабря 2011

К сведению тех, кто может наткнуться на этот вопрос. Я не мог заставить это работать, и закончил тем, что писал свои собственные синглтоны, чтобы справиться с ситуацией.

...