gpt4 book ai didi

java - 如果放置在库 jar 中,则不会拾取 Bean 验证配置

转载 作者:行者123 更新时间:2023-11-30 05:42:07 25 4
gpt4 key购买 nike

我在 Java EE 7 Web 应用程序中使用 Bean Validation 1.1。验证工作正常,但我很难让它在 Wildfly 和 Liberty 上工作。

我已经通过validation.xml配置了一个自定义消息插值器,它放置在库jar中:

ROOT
|-- WEB-INF
|-- lib
|-- my-validation.jar
|-- mypackage
|-- MyMessageInterpolator.class
|-- META-INF
|--validation.xml

部署到 Wildfly 14 后,一切都按预期运行。然而,在 Liberty 19 上,找到了 MyMessageInterpolator,但在验证期间未调用(例如,在 REST 资源中使用 @Valid 时)。

然后,我将 validation.xml 直接移至 Web 应用程序中(不移动消息插值器本身):

ROOT
|-- WEB-INF
|-- classes
|-- META-INF
|-- validation.xml
|-- lib
|-- my-validation.jar
|-- mypackage
|-- MyMessageInterpolator.class

这适用于 Liberty,但我希望当 validation.xml 放置在库 jar 中时它也能工作。 Bean Validation 1.1 spec说:

Unless explicitly ignored [...], a Configuration takes into account the configuration available in META-INF/validation.xml.

我在这里缺少什么?

最佳答案

我同意 Andy 对 Liberty 默认行为的回答。不过,有一个属性 com.ibm.ws.beanvalidation.allowMultipleConfigsPerApp,可以配置它以获得您正在寻找的行为。通过设置 com.ibm.ws.beanvalidation.allowMultipleConfigsPerApp=false(默认值为 true),将扫描整个应用程序以查找单个 META-INF/validation.xml并应用于所有模块。这样做的缺点是您的应用程序中只能定义一个validation.xml。如果发现多个,则会发生部署错误。

有关设置此属性的更多详细信息,请参阅以下链接:

https://www.ibm.com/support/knowledgecenter/en/SSEQTP_liberty/com.ibm.websphere.wlp.doc/ae/rwlp_restrict.html#rwlp_restrict__BeanvalidationFeatureRestrict

http://www-01.ibm.com/support/docview.wss?uid=swg1PI43130

关于java - 如果放置在库 jar 中,则不会拾取 Bean 验证配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55455014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com