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

Ez a szabály a javax.validation.Validation.buildDefaultValidatorFactory() és a Validation.byDefaultProvider().configure().buildValidatorFactory() metódusok minden használatát megjelöli. A beanValidation-1.0 és beanValidation-1.1 Liberty megvalósításokat az Apache Bean Validation adja. A Java EE 8 változatban a beanValidation-2.0 Liberty összetevő által adott komponensérvényesítési megvalósítás Hibernate Validator szolgáltatásra 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. Ez a kiszolgáló által felügyelt ValidatorFactory @Resource, @Inject vagy közvetlen JNDI kikeresés használatával kérdezhető le.

Az alkalmazások a viselkedés megváltozását tapasztalhatták a javax.validation.Validation.buildDefaultValidatorFactory() vagy Validation.byDefaultProvider ().Set ().buildValidatorFactory() használatakor. Megjegyzés: a buildValidatorFactory() meghívása előtt más személyre szabási metódusok is meghívhatók, például: messageInterpolator(), traversableResolver(), parameterNameProvider() vagy constraintValidatorFactory().

Összefoglalva: Azoknak a felhasználóknak, akik azt várják, hogy a ConstraintValidatorFactory által visszaadott objektumok CDI által felügyeltek legyenek, módosításokat kell alkalmazniuk a meglévő komponensérvényesítési kódban.

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 quick fix)
@Inject    //@Resource or a jndi lookup of java:comp/A tároló alapértelmezett ValidatorFactory példányának lekéréshez a ValidatorFactory is használható
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.