Почему @Resource внедряет валидатор Hibernate в Wildfly 15 в классе @ApplicationScoped? - PullRequest
0 голосов
/ 05 июля 2019

У меня есть класс @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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...