![](/img/trans.png)
[英]I upgraded hibernate-validator to version 6.1.5 and application doesn't work on WAS 8.5.5.17
[英]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.Beta1
版5.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.jar
和hibernate-validator-cdi-5.2.0.Beta1.jar
到org/hibernate/validator/main
resp中。 org/hibernate/validator/cdi/main
并更新相应的modules.xml
以指向新的jar文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.