Use bean validation in the product
The Java Enterprise Edition (Java EE) 7 specification includes the Bean Validation 1.1 API that is a standard mechanism for validating JavaBeans in all layers of an application.
Before the Bean Validation specification, JavaBeans were validated in each layer. To prevent the reimplementation of validations at each layer, developers bundled validations directly into their classes or copied validation code, which was often cluttered. Having one implementation that is common to all layers of the application simplifies the developers work and saves time.
Bean validation is common to all layers of an application. Specifically, web applications have the following layers:
- Presentation
This layer represents how the user interacts with the application and might be built on a thin client or rich client.
- Business
This layer coordinates the application, processes commands, makes logical decisions and evaluations and performs calculations. It also moves and processes data between the two other layers. The EJB contains business logic in WebSphere Application Server.
- Data access
Your data is stored and retrieved from a database or file system at this layer. The business layer processes the data and sends it in usable form to the user interface. WAS supports several databases and methods of retrieving data. This layer also defines persistence.
For WAS, these layers are built and administered with several components in the product that are necessary for developing and deploying applications.
The product provides support for the Bean Validation API in the Java EE environment by providing a bean validation service in multiple Java EE technologies including Java Servlets, Enterprise JavaBeans, Java Persistence API (JPA) 2.1, Java EE Connector API (JCA) 1.7 and Java ServerFaces (JSF) 2.2. Bean validation provides these technologies a way to maintain data integrity in an integrated and standard environment.
Enterprise application development involves multiple teams developing numerous applications and modules that are assembled and deployed in an application server environment. The product ensures that each application and module data is validated independently. Validation is performed using only the constraints defined for the application and module.
Subtopics
- Bean validation in RAR modules
WAS validates resource adapter archive (RAR) JavaBeans constraints in compliance with the Java Connector Architecture (JCA) version 1.6 specification.- Bean validation in JPA
Data validation is a common task that occurs in all layers of an application, including persistence. The Java Persistence API (JPA) provides support for the Bean Validation API so that data validation can be done at run time. This topic includes a usage scenario where bean validation is used in the JPA environment of a sample digital image gallery application.
What to do next
- Data access resources:
Bean validation in RAR modules.
The product validates resource adapter archive (RAR) EJB constraints in compliance with the JCA version 1.7 specification. Resource adapters can use the built-in bean validation constraint annotations or provide a bean validation XML configuration to specify the validation requirements of resource adapter configuration properties to the application server.
- Use bean validation in JPA
A new feature defined by the JPA 2.1 specification is the ability to integrate with the Bean Validation API. With minimal effort, JPA 2.1 can be coupled with the validation provider for runtime data validation. By combining these two technologies, we get a standardized persistence solution with the added ability to perform standardized data validation.
- Use bean validation with JSF
JSF previously was able do bean validation, but now it provides built-in support of the Bean Validation specification.
- Use bean validation in web container
The web container provides an instance of ValidatorFactory and makes it available to JSF implementations by storing it in a servlet context attribute named javax.faces.validator.beanValidator.ValidatorFactory.
- Use bean validation with the embeddable container.
To use bean validation with the embeddable EJB container, the javax.validation classes must exist in the class path. That can be done in one of two ways:
- Include the JPA thin client located in the directory ${WAS_INSTALL_ROOT}\runtimes\ in the class path. For JPA 2.1 use com.ibm.ws.jpa-2.1.thinclient_9.0.jar or for JPA 2.0 com.ibm.ws.jpa-2.0.thinclient_9.0.jar. See the topic, Running an embeddable container, and the information about JPA, for more information.
- Include a third party bean validation provider JAR file in the class path of the embeddable EJB container run time.
Restriction:
- New API methods that are added in Bean Validation 1.1 will not work when they are in JPA objects.
- Automatic constructor/method validation is not available.
- We cannot use @Inject to inject a Validator/ValidatorFactory.
- We cannot use CDI when we create custom validation.xml components, like essageInterpolator or ParameterNameProvider.)
Related:
Bean validation in RAR modules Bean Validation Bean validation in JPA Migration of JPA applications and bean validation Running an embeddable container Bean validation built-in constraints Troubleshoot bean validation in RAR modules