Ellenőrizze a buildValidatorFactory és buildDefaultValidatorFactory metódusok viselkedésváltozását

Ez a szabály jelzővel rendelkezik javax.validation.Validation.buildDefaultValidatorFactory() vagy Validation.byDefaultProvider().configure().buildValidatorFactory() . A Liberty beanValidation-1.0 és beanValidation-1.1 A megvalósításokat a Apache Bean Validation biztosítja. A Java EE 8 változatban a Liberty szolgáltatás által biztosított komponens érvényesítési megvalósítás beanValidation-2.0 A (z) Hibernate Validator értékre változott. Az Apache komponensérvényesítési megvalósítása igényel egy nem felügyelt ValidatorFactory objektumot létrehozó alkalmazást, és a ConstraintValidatorFactory egy CDI által felügyelt ConstraintValidator példányt ad vissza. A Hibernate Validator azonban csak CDI által felügyelt ConstraintValidator objektumok előállítását támogatja az alapértelmezett ValidatorFactory objektum segítségével, amelyet a kiszolgáló futási környezet ad. A kiszolgáló által felügyelt ValidatorFactory a következő használatával érhető el: @Resource , @Inject Vagy közvetlen JNDI kikeresés.

Az alkalmazások a viselkedés változását láthatják a használat során javax.validation.Validation.buildDefaultValidatorFactory() vagy Validation.byDefaultProvider().configure().buildValidatorFactory() . Megjegyzendő, hogy más személyre szabási metódusok is hívhatók buildValidatorFactory() Meghívott, például messageInterpolator() , traversableResolver() , parameterNameProvider() , vagy constraintValidatorFactory() .

Összegezve, a felhasználók, akik a által visszaadott objektumokat várják ConstraintValidatorFactory A CDI-nek meg kell valósítnia a meglévő komponens érvényesítési kódjának módosításait.

Az alábbi kód olyan komponensérvényesítési használatot mutat be, amelyet át kell dolgozni:


//Original application behavior
Validator validator = Validation.byDefaultProvider().configure().messageInterpolator(messageResourceInterpolator).buildValidatorFactory().getValidator();

Az alábbi kód a problémás kód javítását mutatja be:


//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();

Az érvényesítés konfigurálásával kapcsolatos további információkért WebSphere Liberty kiszolgálón, tekintse meg a Bean Validation 2.0 dokumentációt.