簡體   English   中英

如何在Wildfly 8.2中使用Hibernate Validator Jar的升級版本?

[英]How to use an Upgraded Version of the Hibernate Validator Jar in Wildfly 8.2?

我正在將Hibernate Validator集成到我們基於Java的Web應用程序中。 我們廣泛使用JSR-310類型。

我看到Hibernate Validator 5.2版增加了對這些類型的支持,因此我像其他所有依賴項一樣,將5.2.0.Beta15.2.0.Beta1到了EAR部署的/lib目錄中。

但是當我測試部署的EAR時,出現以下錯誤:

javax.validation.UnexpectedTypeException: HV000030: No validator could be found for type: java.time.Instant.
    at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorManager.verifyResolveWasUnique(ConstraintValidatorManager.java:218) [hibernate-validator-5.1.3.Final.jar:5.1.3.Final]
    at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorManager.findMatchingValidatorClass(ConstraintValidatorManager.java:193) [hibernate-validator-5.1.3.Final.jar:5.1.3.Final]
    at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorManager.getInitializedValidator(ConstraintValidatorManager.java:97) [hibernate-validator-5.1.3.Final.jar:5.1.3.Final]
    at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:125) [hibernate-validator-5.1.3.Final.jar:5.1.3.Final]
    at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:91) [hibernate-validator-5.1.3.Final.jar:5.1.3.Final]
    at org.hibernate.validator.internal.metadata.core.MetaConstraint.validateConstraint(MetaConstraint.java:83) [hibernate-validator-5.1.3.Final.jar:5.1.3.Final]
    at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:547) [hibernate-validator-5.1.3.Final.jar:5.1.3.Final]
    at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForDefaultGroup(ValidatorImpl.java:487) [hibernate-validator-5.1.3.Final.jar:5.1.3.Final]
    at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:451) [hibernate-validator-5.1.3.Final.jar:5.1.3.Final]
    at org.hibernate.validator.internal.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:403) [hibernate-validator-5.1.3.Final.jar:5.1.3.Final]
    at org.hibernate.validator.internal.engine.ValidatorImpl.validateCascadedConstraint(ValidatorImpl.java:723) [hibernate-validator-5.1.3.Final.jar:5.1.3.Final]
    at org.hibernate.validator.internal.engine.ValidatorImpl.validateCascadedConstraints(ValidatorImpl.java:601) [hibernate-validator-5.1.3.Final.jar:5.1.3.Final]
    at org.hibernate.validator.internal.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:412) [hibernate-validator-5.1.3.Final.jar:5.1.3.Final]
    at org.hibernate.validator.internal.engine.ValidatorImpl.validate(ValidatorImpl.java:206) [hibernate-validator-5.1.3.Final.jar:5.1.3.Final]

注意, hibernate-validator-5.1.3.Final.jar:5.1.3.Final出現在堆棧跟蹤中,而不是我在EAR文件中擁有的5.2.0.Beta1

我認為發生的事情是Wildfly(我們使用的是8.2.0.Final)包含了較舊版本的hibernate-validator JAR,而不是包含在EAR文件中的較新版本。 如何防止這種情況發生?

我認為答案可能是包括一個jboss-deployment-structure.xml文件,該文件哄騙Wildfly使用我提供的JAR。 我找到了此參考資料 ,但不清楚該文件中包含哪些內容以誘使Wildfly使用我提供的JAR。

使用jboss-deployment-structure.xml可能是這樣做的一種方式。 但是,我建議僅在modules/system/layers/base下更新模塊配置。 hibernate-validator-5.2.0.Beta1.jarhibernate-validator-cdi-5.2.0.Beta1.jarorg/hibernate/validator/main resp中。 org/hibernate/validator/cdi/main並更新相應的modules.xml以指向新的jar文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM