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

标签 java jboss wildfly wildfly-8 hibernate-validator

我正在将 Hibernate Validator 集成到我们基于 Java 的 Web 应用程序中。我们广泛使用 JSR-310 类型。

我发现 Hibernate Validator 版本 5.2 添加了对这些类型的支持,因此我已将版本 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 出现在堆栈跟踪中,而不是我看到的 5.2.0.Beta1我的 EAR 文件中有。

我认为发生的情况是 Wildfly(我们使用的是 8.2.0.Final)包含旧版本的 hibernate-validator JAR,而不是我们包含在 EAR 文件中的较新版本。如何防止这种情况发生?

我认为答案可能是包含一个 jboss-deployment-struction.xml 文件来引导 Wildfly 使用我提供的 JAR。我找到了这个reference ,但尚不清楚该文件中应包含哪些内容来诱使 Wildfly 使用我提供的 JAR。

最佳答案

使用jboss-deployment-structure.xml可能是这样做的一种方法。但是,我建议只更新modules/system/layers/base下的模块配置。 。复制hibernate-validator-5.2.0.Beta1.jarhibernate-validator-cdi-5.2.0.Beta1.jar进入org/hibernate/validator/main分别。 org/hibernate/validator/cdi/main并更新相应的modules.xml指向新的 jar 文件。

关于java - 如何在 Wildfly 8.2 中使用升级版的 Hibernate Validator Jar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30407366/

相关文章:

Java For循环三角形图案

java - 在 Java EE 5 (JBoss) 平台上启动计划任务的正确方法是什么?

java - 无法遍历 JSON 数组

java - AWS S3 上的托管文件可以从特定网站下载,但不能从其他地方下载

java - ArrayList<字符串> 错误

java - 通过 JAAS 以编程方式登录用户

java - Seam Mail 内联图像问题

java - 如何删除 JBoss 工具项目属性中的 JPA 连接?

java - 无法在 WildFly 10 中上传超过 1MB 的文件?

java - 无法在 Linux 上打开 Wildfly 管理控制台