У меня есть приложение JavaEE6, работающее на Glassfish v3.0.1 с EJB 3.1 (приложение упаковано как WAR), а все мои EJB - @LocalBeans. В настоящее время я пишу FacesConverter для использования в JSF2, в котором мне нужен EntityManager, чтобы вернуть Entity из идентификатора.Получение Entitymanager/EJB внутри @ FacesConverter/Validator от WAR-упакованного приложения
Теперь мне интересно, что является лучшим и самым чистым способом получить Entitymanager внутри FacesConverter, теперь, когда мы находимся на JEE6? Или я могу получить доступ к EJB через язык выражений? И Weld/CDI не работает внутри FacesConverter или не работает?
@FacesConverter(value="subscriptionListConverter")
class SubscriptionListConverter extends Converter {
public Object getAsObject(FacesContext ctx, UIComponent comp, String value) {
var id:Long = Long.parseLong(value);
// How to get the entitymanager?
return em.find(User.getClass, id);
}
public String getAsString(ctx:FacesContext, comp:UIComponent, value:Object) {...}
}
Извините, я надеюсь, что это не дубликат, но в большинстве случаев я видел, где немного отличается и не очень помог мне.
AFAIK это должно работать только с Seam Faces, но без него. Преобразователи/Валидаторы не поддерживают инъекцию. По крайней мере, не в конфигурации, упомянутой в моем вопросе. – ifischer