Я использую jsf2.2 с wildfly 8.1 и javaee7.@PostConstruct не вызван в PhaseListener
Мой CDI инъекции фасоли в phaselistener работает, как ожидалось, но метод @PostConstuct никогда не invocked
Я попытался аннотировать phaselistener с @ javax.enterprise.context.ApplicationScope, SessionScope и Dependent но безрезультатно ,
Помимо наименования, это то, что я делаю в своей конструкции сообщения.
//@ApplicationScope
//@SessionScope
//@Dependent
public class MyPhaseListener implements PhaseListener {
@Inject
@Any
private Instance<MyOrderedUrlHandler> myOrderedUrlhandlers;
private Map<String, List<MyOrderedUrlHandler> orderedUrlHandlersMap;
@PostConstruct
void mapOrderedUrlHandlers() {
LOG.info("Executing postconstruct");
orderedUrlHandlersMap = Maps.newHashMap();
for(final MyOrderedUrlHandler urlhandler : myOrderedUrlhandlers) {
final String handles = urlhandler.url();
final List<MyOrderedUrlHandler> registeredHandlers = orderedUrlHandlersMap.get(handles);
if(registeredHandlers == null) {
registeredHandlers = Lists.newArraList();
}
registeredHandlers.add(urlHandler);
orderedUrlHandlersMap.put(handles, registeredHandlers);
}
}
}
Метод инъекции уровня также отлично работает.
Это тот случай, когда обратный вызов @PostConstruct не является частью спецификаций jsf phaselistener?
Показать Ваш код. Возможно, вы нарушите контракт для '@ PostConstruct' – kolossus
Что делать, если вы и явный конструктор по умолчанию? – Kukeltje
@Kukeltje Что значит стандартный конструктор? Вызывается фазестильщик, проблема в том, что «@PostConstruct» не вызывается. Как в этом случае поможет явный конструктор по умолчанию? – maress