Компонент с именем JSF, ограниченный областью приложения (он же @ManagedBean (нетерпеливый = true))

#java #jsf-2 #glassfish-3 #cdi #managed-bean

#java #jsf-2 #glassfish-3 #cdi #управляемый компонент

Вопрос:

Есть ли какой-либо способ инициализировать именованный компонент, аннотированный javax.inject.Named / javax.enterprise.context.ApplicationScoped как @ManagedBean(eager=true) из javax.faces пакета?

 @Named
@ApplicationScoped
public Mail() { ... }
  

Я хочу загружать этот класс при запуске приложения, а не когда webapplication ссылается на этот компонент.

ps. Компонент JSF 2.1
, введенный Glassfish 3.1

Ответ №1:

Вы можете создать расширение CDI, которое имеет параметр @Observes AfterBeanDiscovery в одном из его методов. Там вы можете создать экземпляр bean и, таким образом, инициализировать его при запуске контейнера. CODI упростил для вас эти задачи, см.https://cwiki.apache.org/confluence/display/EXTCDI/Core Usage#CoreUsage-Startup