У меня есть класс @ApplicationScoped
, которому нужен экземпляр javax.validation.validator
(реализован в этом проекте org.hibernate.validator.internal.engine.ValidatorImpl
), поэтому я пытаюсь внедрить его через @Resource
, что не удается с исключением(неудовлетворенная зависимость)
Изменение @Resource на @Inject
работает, а также сохраняет @Resource
и объявляет класс @Stateless
вместо @ApplicationScoped.
Может кто-то пролить светна это поведение?Исходная конфигурация (@ApplicationScoped + @Resource)
взята из унаследованного кода, который мы переносим из Weblogic - сейчас нам нужно работать как на WL, так и на Wildfly.
import javax.annotation.Resource;
import javax.enterprise.context.ApplicationScoped;
import javax.validation.Validator;
import javax.validation.groups.Default;
@ApplicationScoped
public class MyValidator {
@Resource
private Validator validator;
public void doValidate(final SomeModel model) {
this.validator.validate(model, Default.class);
}
}
}
Исключение:
WFLYWELD0049: Error injecting resource into CDI managed bean. Can't find a resource named java:comp/env/my.package.MyValidator/validator defined on private javax.validation.Validator my.package.MyValidator.validator
Caused by: javax.naming.NameNotFoundException: env/my.package.MyValidator/validator -- service jboss.naming.context.java.comp.hrd-ear.ejb.SomeBean.env."my.package.MyValidator".validator