2013-03-05 1 views
2

Я пишу проверку bean-фактуры на моей модели сохранения. Мне нужно вызвать мой EJB Bean, чтобы получить некоторый параметр parammeter из DB. Как я могу это достичь?Проверка JBoss bean необходимо вызвать EJB

Я попытался отметить свой EntityValidator как @Stateless и @LocalBean, но JBoss по-прежнему обрабатывает мой EntityValidator как POJO. Могу ли я что-то сделать? В качестве альтернативы, как я могу получить EJB из POJO.

ответ

2

По Bean Validation 1.0, вы не можете получить EJBs впрыскивается в валидатор из коробки. Однако это изменится с помощью Bean Validation 1.1.

В настоящее время у вас есть следующие возможности:

  • извлечения EJB через JNDI: MyEjb myEjb = InitialContext.doLookup(myEjbName);
  • Реализовать обычай ConstraintValidatorFactory который впрыскивает ссылки EJB в созданный валидатор объекты
  • Использование Seam Validation, что позволяет инъекции зависимостей для объекты валидатора с использованием @Inject (отказ от ответственности: я являюсь автором проверки сейфа)

С Bean 1.1 это будет возможно out of box.

+0

Мы используем CODI для того, чтобы делать то же самое с CDI beans. Я предполагаю, что реализация похожа на Seam-Validation. –

0

Я не думаю, что jboss введет ваш компонент в валидатор JPA.

Вы можете использовать JDNI для поиска EJB для POJO.

1

В настоящее время инъекция не работает в валидаторах.

У меня есть read, что есть планы на будущее расширение bean validaton для обеспечения именно такого поведения.

Однако там должно быть расширение, например, шов или deltaspike, что позволило бы обеспечить инъекцию.

Проверьте это: injection in validators

+0

CODI, а также Seam3 поддерживают его. Поскольку оба слияния с DeltaSpike, я думаю, они будут поддерживать то же самое. Мы предпочитаем CODI и DeltaSpike, потому что они протестированы с большим количеством сред и минимальный размер. –