简体   繁体   English

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

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

I'm in the process of integrating Hibernate Validator into our Java based web app. 我正在将Hibernate Validator集成到我们基于Java的Web应用程序中。 We use JSR-310 types extensively. 我们广泛使用JSR-310类型。

I see that Hibernate Validator version 5.2 adds support for these types, so I've added version 5.2.0.Beta1 to my EAR deployment's /lib directory like all of our other dependencies. 我看到Hibernate Validator 5.2版增加了对这些类型的支持,因此我像其他所有依赖项一样,将5.2.0.Beta15.2.0.Beta1到了EAR部署的/lib目录中。

But when I test our deployed EAR, I get the following error: 但是当我测试部署的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]

Notice that hibernate-validator-5.1.3.Final.jar:5.1.3.Final appears in the stack trace not the 5.2.0.Beta1 that I have in my EAR file. 注意, hibernate-validator-5.1.3.Final.jar:5.1.3.Final出现在堆栈跟踪中,而不是我在EAR文件中拥有的5.2.0.Beta1

I think what's happening is that Wildfly (we're using 8.2.0.Final) is including an older version of the hibernate-validator JARs instead of the newer ones that we're including in our EAR file. 我认为发生的事情是Wildfly(我们使用的是8.2.0.Final)包含了较旧版本的hibernate-validator JAR,而不是包含在EAR文件中的较新版本。 How do I prevent this from happening? 如何防止这种情况发生?

I think the answer might be to include a jboss-deployment-structure.xml file that coaxes Wildfly to use the JAR that I supply. 我认为答案可能是包括一个jboss-deployment-structure.xml文件,该文件哄骗Wildfly使用我提供的JAR。 I've found this reference , but it's not clear what to include in that file to coax Wildfly into using the JAR I supply. 我找到了此参考资料 ,但不清楚该文件中包含哪些内容以诱使Wildfly使用我提供的JAR。

Using jboss-deployment-structure.xml might be one way of doing this. 使用jboss-deployment-structure.xml可能是这样做的一种方式。 However, I would suggest to just update the module configurations under modules/system/layers/base . 但是,我建议仅在modules/system/layers/base下更新模块配置。 Copy hibernate-validator-5.2.0.Beta1.jar and hibernate-validator-cdi-5.2.0.Beta1.jar into org/hibernate/validator/main resp. hibernate-validator-5.2.0.Beta1.jarhibernate-validator-cdi-5.2.0.Beta1.jarorg/hibernate/validator/main resp中。 org/hibernate/validator/cdi/main and update the respective modules.xml to point to the new jar files. org/hibernate/validator/cdi/main并更新相应的modules.xml以指向新的jar文件。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM