Это правило помечает любое использование javax.validation.Validation.buildDefaultValidatorFactory() или Validation.byDefaultProvider().configure().buildValidatorFactory() . The Liberty beanValidation-1.0 и beanValidation-1.1 implementations are provided by Apache Bean Validation. В Java EE 8-реализация проверки объекта EJB, предоставлялась функцией Liberty beanValidation-2.0 был изменен на агент проверки Hibernate . Согласно требованиям реализации Apache Bean Validation, приложение должно создать неуправляемый объект ValidatorFactory, а ConstraintValidatorFactory возвращает управляемый CDI экземпляр ConstraintValidator. Однако компонент Hibernate Validator поддерживает создание управляемых CDI объектов ConstraintValidator только с помощью ValidatorFactory по умолчанию из среды выполнения сервера. Этот управляемый сервер ValidatorFactory можно получить с помощью @Resource , @Inject , или прямой поиск JNDI.
При использовании приложений может быть видно изменение поведения javax.validation.Validation.buildDefaultValidatorFactory() или Validation.byDefaultProvider().configure().buildValidatorFactory() . Обратите внимание на то, что другие методы настройки можно вызвать до buildValidatorFactory() вызывается, например, messageInterpolator() , traversableResolver() , parameterNameProvider() или constraintValidatorFactory() .
В сводке пользователи, ожидающие возвращенные объекты ConstraintValidatorFactory для управляемой CDI, необходимо будет реализовать изменения в существующем коде проверки объектов EJB.
Пример использования Bean Validation, для которого требуется рефакторинг:
//Original application behavior
Validator validator = Validation.byDefaultProvider().configure().messageInterpolator(messageResourceInterpolator).buildValidatorFactory().getValidator();
Пример исправленного кода:
//Recommended application behavior (potential Automated Fix)
@Inject //@Resource or a jndi lookup of java:comp/ValidatorFactory could also be used to obtain the container's default ValidatorFactory
ValidatorFactory validatorFactory;
Validator validator = validatorFactory.usingContext().messageInterpolator(messageResourceInterpolator).getValidator();
За дополнительной информацией о проверке в WebSphere Liberty обратитесь к документации по Bean Validation 2.0.