[bv-dev] Bean Validation 2.0 Early Draft: Web Container Clarification Request

Gunnar Morling gunnar at hibernate.org
Fri Apr 21 04:38:56 EDT 2017


All,

After discussing this with Linda DeMichiel, this is being resolved within
the Java EE spec which won't mention any specific locations for the
descriptor any longer, instead it refers to the BV spec.

Servers which happened to support WEB-INF/validation.xml should abandon
this in favour of the standard location META-INF/validation.xml, but they
could keep supporting the old one as a fallback (ideally raising a warning
if it's used) to ease migration of existing applications.

I've resolved https://hibernate.atlassian.net/browse/BVAL-581 accordingly.

Thanks again to Nathan for bringing this up.

--Gunnar


2017-03-23 17:36 GMT+01:00 Gunnar Morling <gunnar at hibernate.org>:

> My question then is whether WEB-INF/persistence.xml is supported by JPA or
> not.
>
> From looking at the JPA 2.1 and Java EE 7 specs, that seems not to be the
> case. Also just tried it on WildFly 10.1, and it's ignored when given at
> WEB-INF/persistence.xml.
>
> 2017-03-21 14:40 GMT+01:00 Emmanuel Bernard <emmanuel at hibernate.org>:
>
>> As BVAL-200 says, it was intended to support validation.xml int he same
>> places persistence.xml is supported for consistency.
>> Check out what is said about JPA. It might be the same issue though.
>>
>> On 21 Mar 2017, at 01:51, Gunnar Morling <gunnar at hibernate.org> wrote:
>>
>> BVAL-200 is not exactly the same (I've filed
>> https://hibernate.atlassian.net/browse/BVAL-581 for the current one).
>>
>> BVAL-200 is about the fact that "META-INF" is located within
>> WEB-INF/classes for WARs. All is good with that.
>>
>> But the JavaEE spec actually says that "WEB-INF/validation.xml" (i.e. not
>> "WEB-INF/classes/META-INF/validation.xml") should be used for web
>> modules. AFAICS, this never has worked with the RI, but it seems to be the
>> case for Apache Bval.
>>
>> Emmanuel, do you remember whether it was actually intended to use
>> "WEB-INF/validation.xml" for web modules?
>>
>>
>> 2017-03-21 1:28 GMT+01:00 Emmanuel Bernard <emmanuel at hibernate.org>:
>>
>>> https://hibernate.atlassian.net/browse/BVAL-200
>>>
>>> On 20 Mar 2017, at 04:34, Gunnar Morling <gunnar at hibernate.org> wrote:
>>>
>>> Hi,
>>>
>>> Thanks for bringing up this issue, Nathan.
>>>
>>> The Bean Validation spec expects the file to be at
>>> META-INF/validation.xml, no matter what type of application it is. I'll
>>> need to dig a bit deeper why the platform spec mentions
>>> WEB-INF/validation.xml.
>>>
>>> > the TCK uses the WEB-INF/validation.xml location
>>>
>>> Do you have a pointer to this usage? Please send it to me off-list if
>>> it's somewhere within the EE TCK. The BV TCK itself uses
>>> META-INF/validation.xml.
>>>
>>> > Therefore, I'd expect a lot of users in the field to be using the
>>> WEB-INF location
>>>
>>> I just tried WEB-INF/validation.xml in a plain WAR as well as a WAR
>>> within an EAR, and it wouldn't be applied either way (testing the BV
>>> reference implementation). Do you have a test case which shows successful
>>> usage of WEB-INF/validation.xml?
>>>
>>> > Otherwise, the JavaEE Platform spec could be changed to no longer
>>> state WEB-INF/validation.xml
>>>
>>> My current inclination is to suggest exactly that to the Java EE leads,
>>> as it seems like a glitch and I can't see how it'd ever work with the RI. But
>>> I'll synch with Emmanuel (former BV lead) to make sure I'm not missing a
>>> piece.
>>>
>>> @Marco,
>>>
>>> > 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
>>>
>>> You seem to suggest that a container somehow may make it that
>>> WEB-INF/validation.xml is exposed as META-INF/validation.xml to the BV
>>> provider. That may theoretically be doable, but I don't think it's intended
>>> or suggested by the EE spec.
>>>
>>> Specifically, section EE.5.16 deals with the "application client
>>> container" property which the container must set depending on where this
>>> app is running (ACC vs. web/EJB container). It's not related to the
>>> retrieval of BV deployment descriptors.
>>>
>>> --Gunnar
>>>
>>>
>>> 2017-03-17 20:03 GMT+01:00 Marco Molteni <moltenma at gmail.com>:
>>>
>>>> Hi Nathan,
>>>>
>>>> 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.
>>>>
>>>> Regards
>>>>
>>>> Marco
>>>>
>>>>
>>>> Am 15.03.2017 um 17:39 schrieb Nathan Mittlestat <nmittles at gmail.com>:
>>>>
>>>> Hi All,
>>>>
>>>> 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 one META-
>>>> 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.
>>>>
>>>>
>>>>
>>>> --Nathan
>>>> _______________________________________________
>>>> beanvalidation-dev mailing list
>>>> beanvalidation-dev at lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/beanvalidation-dev
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> beanvalidation-dev mailing list
>>>> beanvalidation-dev at lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/beanvalidation-dev
>>>>
>>>
>>> _______________________________________________
>>> beanvalidation-dev mailing list
>>> beanvalidation-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/beanvalidation-dev
>>>
>>>
>>>
>>> _______________________________________________
>>> beanvalidation-dev mailing list
>>> beanvalidation-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/beanvalidation-dev
>>>
>>
>> _______________________________________________
>> beanvalidation-dev mailing list
>> beanvalidation-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/beanvalidation-dev
>>
>>
>>
>> _______________________________________________
>> beanvalidation-dev mailing list
>> beanvalidation-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/beanvalidation-dev
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/beanvalidation-dev/attachments/20170421/f95331b2/attachment-0001.html 


More information about the beanvalidation-dev mailing list