我在Java EE 7 Web应用程序中使用Bean Validation 1.1。验证工作正常,但是我很难使它在Wildfly和Liberty上都能正常工作。
我已经通过validate.xml配置了一个自定义消息插入器,该消息插入器位于库jar中:
ROOT
|-- WEB-INF
|-- lib
|-- my-validation.jar
|-- mypackage
|-- MyMessageInterpolator.class
|-- META-INF
|--validation.xml
部署到Wildfly 14后,一切都会按预期进行。但是MyMessageInterpolator
,在Liberty 19 上找到了,但是在验证期间未调用(例如,@Valid
在REST资源中使用时)。
然后,我validation.xml
直接移动到Web应用程序中(而不移动消息插值器本身):
ROOT
|-- WEB-INF
|-- classes
|-- META-INF
|-- validation.xml
|-- lib
|-- my-validation.jar
|-- mypackage
|-- MyMessageInterpolator.class
这在Liberty上有效,但我希望将它validation.xml
放在库罐中时也可以使用。该Bean验证1.1规范说:
除非明确忽略,否则a
Configuration
将考虑可用的配置META-INF/validation.xml
。
我在这里想念什么?
我同意安迪(Andy)对自由的默认行为的回答。但是,有一个属性,com.ibm.ws.beanvalidation.allowMultipleConfigsPerApp
可以配置为获取所需的行为。通过设置com.ibm.ws.beanvalidation.allowMultipleConfigsPerApp=false
(默认值为true),将扫描整个应用程序中的单个应用程序并将其META-INF/validation.xml
应用于所有模块。缺点是在您的应用程序中只能定义一个validation.xml。如果发现多个,则会发生部署错误。
有关设置此属性的更多详细信息,请参见以下链接:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句