I agree that can be confusing for the developers that read the two documents but the
specification of BV is, IMHO, consistent:
1.2. Specification Goals: 'The validation API developed by this JSR is not intended
for use in any one tier or programming model. It is specifically not tied to either the
web tier or the persistence tier'.
And the JavaEE spec version 7 (and 8) :
'EE.5.16.2 Java EE Product Provider’s Responsibilities
The Java EE Product Provider is responsible for providing the correct application client
container property as required by this specification.'
'EE.5.17.1 Application Component Provider’s Responsibilities
[...] The Application Component Provider may customize the ValidatorFactory and
(indirectly) Validator instances by including a Bean Validation deployment descriptor
inside a specific module of the application.'
'EE.5.17.2 Java EE Product Provider’s Responsibilities
[...] These objects must be used to configure the default ValidatorFactory available at
java:comp/ValidatorFactory in accordance with the bootstrapping APIs described by the Bean
Validation specification. [...]'
The implementation of 'WEB-INF/validation.xml' for the web components and its
integration with Bean Validation is the full responsibility (EE.5.16.2) of the Java EE
Product Provider that declares it .
The Bean Validation doesn't have to worry (or know) about the existence of a web
component or a web configuration directory, it's out of its scope.
The correct configuration and communication between these (Web and BC) and other
components is regulated by the container (EE.2.4).
The documents are (maybe) confusing but correct, in my opinion.
Am 15.03.2017 um 17:39 schrieb Nathan Mittlestat
One area I'd like to see a clarification on in the spec is around the location of the
validation.xml in a JavaEE web container environment. The Bean Validation spec indicates
the validation.xml is always at META-INF/validation.xml. The JavaEE Platform spec states
WEB-INF/validation.xml should be used for web modules. The entire Bean Validation spec has
no mention of web modules, and seems to mainly focus on JavaSE. However, it does mention
integration points such as CDI and JAX-RS, so I don't think it would be out of line to
clarify in the Bean Validation spec for web modules. Otherwise, the JavaEE Platform spec
could be changed to no longer state WEB-INF/validation.xml, but previous JavaEE versions
already include this, and the TCK uses the WEB-INF/validation.xml location. Therefore,
I'd expect a lot of users in the field to be using the WEB-INF location.
The Bean Validation spec has the following section (page 206):
Unless explicitly ignored by calling Configuration.ignoreXMLConfiguration(), a
Configuration takes into
account the configuration available in META-INF/validation.xml. This configuration file
is optional but
can be used by applications to refine some of the Bean Validation behavior. If more than
INF/validation.xml file is found in the classpath, a ValidationException is raised.
In contrasts the JavaEE Platform spec has (page 127 of JavaEE 7):
In order to customize the returned ValidatorFactory, an EJB, web or
application client module may specify a Bean Validation XML deployment
descriptor. The name of the descriptor is WEB-INF/validation.xml for web
modules and META-INF/validation.xml for all other types of modules.
beanvalidation-dev mailing list