如何在JBoss 6.4中禁用javax.validation.api [英] How can I disable javax.validation.api in JBoss 6.4

查看:217
本文介绍了如何在JBoss 6.4中禁用javax.validation.api的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

类似问题:



如何在JBoss EAP 6.4.0中使用bean验证1.1?



如何在jboss EAP 6.3上更改bean验证版本?



你能在JBoss EAP 6.4.4中使用bean验证1.1(JSR 349)吗?



<如果我们可以在JBoss 6.x中使用Bean Validation 1.1,似乎存在一些不确定性。



我当前的jboss-deployment-structure.xml:

 <?xml version =1.0encoding =UTF-8?> 
< jboss-deployment-structure xmlns =urn:jboss:deployment-structure:1.0>
< deployment>
< dependencies>
<! - 从https://access.redhat.com/articles/1122333获取的模块列表 - >
< module name =javax.activation.api/>
< module name =javax.annotation.api/>
< module name =javax.ejb.api/>
< module name =javax.el.api/>
< module name =javax.enterprise.api/>
< module name =javax.enterprise.deploy.api/>
< module name =javax.faces.api/>
< module name =javax.inject.api/>
< module name =javax.interceptor.api/>
< module name =javax.jms.api/>
< module name =javax.jws.api/>
< module name =javax.mail.api/>
< module name =javax.management.j2ee.api/>
< module name =javax.persistence.api/>
< module name =javax.resource.api/>
< module name =javax.rmi.api/>
< module name =javax.security.auth.message.api/>
< module name =javax.security.jacc.api/>
< module name =javax.servlet.api/>
< module name =javax.servlet.jsp.api/>
< module name =javax.servlet.jstl.api/>
< module name =javax.transaction.api/>
<! - < module name =javax.validation.api/> - >
< module name =javax.ws.rs.api/>
< module name =javax.wsdl4j.api/>
< module name =javax.xml.bind.api/>
< module name =javax.xml.jaxp-provider/>
< module name =javax.xml.registry.api/>
< module name =javax.xml.rpc.api/>
< module name =javax.xml.soap.api/>
< module name =javax.xml.stream.api/>
< module name =javax.xml.ws.api/>
< module name =javax.api/>
< / dependencies>
< exclusions>
< module name =javaee.api/>
< module name =org.hibernate.validator/>
< / exclusions>
< / deployment>
< / jboss-deployment-structure>

我在.ear中捆绑了以下依赖项:

 < dependency> 
< groupId> javax.validation< / groupId>
< artifactId> validation-api< / artifactId>
< version> 1.1.0.Final< / version>
< / dependency>

<依赖>
< groupId> org.hibernate< / groupId>
< artifactId> hibernate-validator< / artifactId>
< version> 5.2.2.Final< / version>
< / dependency>

但我得到以下堆栈跟踪:

  14:09:43,485 WARN [org.jboss.resteasy.plugins.validation.hibernate.AbstractValidatorContextResolver](AFP-HTTP-96)无法加载验证支持:javax.validation.ValidationException:无法找到提供者:class org.hibernate.validator.HibernateValidator 
at javax.validation.Validation $ ProviderSpecificBootstrapImpl.configure(Validation.java:223)[validation-api-1.0.0.GA-redhat-3.jar :1.0.0.GA-redhat-3]
org.jboss.resteasy.plugins.validation.hibernate.AbstractValidatorContextResolver.getGeneralValidator(AbstractValidatorContextResolver.java:40)[resteasy-hibernatevalidator-provider-3.0.9.Final .jar:]
at org.jboss.resteasy.plugins.validation.hibernate.AbstractValidatorContextResolver.getContext(AbstractValidatorContextResolver.java:54)[resteasy-hibernatevalidator-provider-3.0.9.Final.jar:]
org.jboss.resteasy.plugins.validation.hibernate.ValidatorContextResolverC DI.getContext(ValidatorContextResolverCDI.java:16)[resteasy-hibernatevalidator-provider-3.0.9.Final.jar:]
at org.jboss.resteasy.cdi.JaxrsInjectionTarget.validate(JaxrsInjectionTarget.java:113)[ resteasy-cdi-3.0.9.Final.jar:]
org.jboss.resteasy.cdi.JaxrsInjectionTarget.inject(JaxrsInjectionTarget.java:67)[resteasy-cdi-3.0.9.Final.jar:]
at org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:297)[weld-core-1.1.31.Final-redhat-1.jar:1.1.31.Final-redhat-1]
at org.jboss.weld.context.unbound.DependentContextImpl.get(DependentContextImpl.java:68)[weld-core-1.1.31.Final-redhat-1.jar:1.1.31.Final-redhat- 1]
at org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:626)[weld-core-1.1.31.Final-redhat-1.jar:1.1.31.Final-redhat- 1]
at org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:653)[weld-core-1.1.31.Final-redhat-1.jar:1.1.31.Final-redhat- 1]
at org.jboss.resteasy.cdi.CdiConstructorInjector.construct(CdiConstr uctorInjector.java:64)[resteasy-cdi-3.0.9.Final.jar:]
at org.jboss.resteasy.cdi.CdiConstructorInjector.construct(CdiConstructorInjector.java:69)[resteasy-cdi-3.0。 9.Final.jar:]
at org.jboss.resteasy.plugins.server.resourcefactory.POJOResourceFactory.createResource(POJOResourceFactory.java:52)[resteasy-jaxrs-3.0.9.Final.jar:]
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:236)[resteasy-jaxrs-3.0.9.Final.jar:]
at org.jboss.resteasy.core.SynchronousDispatcher。调用(SynchronousDispatcher.java:356)[resteasy-jaxrs-3.0.9.Final.jar:]
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:179)[resteasy-jaxrs- 3.0.9.Final.jar:]
at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220)[resteasy-jaxrs-3.0.9.Final.jar:]
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(httpServletDispatcher.java:56)[resteasy-jax rs-3.0.9.Final.jar:]
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(httpServletDispatcher.java:51)[resteasy-jaxrs-3.0.9.Final.jar :]
...

如您所见,验证API是validation-api -1.0.0.GA-redhat-3.jar:1.0.0.GA-redhat-3这意味着JBoss捆绑模块实际上并未从类路径中删除。我做错了什么或是一个不让我删除javax.validation.api的错误?我是否需要用手动依赖替换更多模块(例如resteasy)?

解决方案

JBoss EAP 6.x是一个JEE6实现容器。另外请记住,更改JBoss EAP6附带的bean验证模块会破坏支持的位。



Bean验证是JEE7规范的一部分。您需要升级到 JBoss EAP7 或使用 WildFly 9或10 。它们都实现了JEE7规范,其中包括Bean Validation 1.1。


Similar questions:

How to use bean validation 1.1 in JBoss EAP 6.4.0?

How to change bean-validation version on jboss EAP 6.3?

Can you use bean validation 1.1 (JSR 349) in JBoss EAP 6.4.4?

There seems to be some uncertainty if we can use Bean Validation 1.1 in JBoss 6.x.

My current jboss-deployment-structure.xml:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
  <deployment>
    <dependencies>
      <!-- list of modules taken from https://access.redhat.com/articles/1122333 -->
      <module name="javax.activation.api" />
      <module name="javax.annotation.api" />
      <module name="javax.ejb.api" />
      <module name="javax.el.api" />
      <module name="javax.enterprise.api" />
      <module name="javax.enterprise.deploy.api" />
      <module name="javax.faces.api" />
      <module name="javax.inject.api" />
      <module name="javax.interceptor.api" />
      <module name="javax.jms.api" />
      <module name="javax.jws.api" />
      <module name="javax.mail.api" />
      <module name="javax.management.j2ee.api" />
      <module name="javax.persistence.api" />
      <module name="javax.resource.api" />
      <module name="javax.rmi.api" />
      <module name="javax.security.auth.message.api" />
      <module name="javax.security.jacc.api" />
      <module name="javax.servlet.api" />
      <module name="javax.servlet.jsp.api" />
      <module name="javax.servlet.jstl.api" />
      <module name="javax.transaction.api" />
      <!--<module name="javax.validation.api" />-->
      <module name="javax.ws.rs.api" />
      <module name="javax.wsdl4j.api" />
      <module name="javax.xml.bind.api" />
      <module name="javax.xml.jaxp-provider" />
      <module name="javax.xml.registry.api" />
      <module name="javax.xml.rpc.api" />
      <module name="javax.xml.soap.api" />
      <module name="javax.xml.stream.api" />
      <module name="javax.xml.ws.api" />
      <module name="javax.api" />
    </dependencies>
    <exclusions>
      <module name="javaee.api" />
      <module name="org.hibernate.validator" />
    </exclusions>
  </deployment>
</jboss-deployment-structure>

I bundle the following dependencies in the .ear:

<dependency>
  <groupId>javax.validation</groupId>
  <artifactId>validation-api</artifactId>
  <version>1.1.0.Final</version>
</dependency>

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-validator</artifactId>
  <version>5.2.2.Final</version>
</dependency>

But I get the following stacktrace:

14:09:44,085 WARN  [org.jboss.resteasy.plugins.validation.hibernate.AbstractValidatorContextResolver] (AFP-HTTP-96) Unable to load Validation support: javax.validation.ValidationException: Unable to find provider: class org.hibernate.validator.HibernateValidator
at javax.validation.Validation$ProviderSpecificBootstrapImpl.configure(Validation.java:223) [validation-api-1.0.0.GA-redhat-3.jar:1.0.0.GA-redhat-3]
at org.jboss.resteasy.plugins.validation.hibernate.AbstractValidatorContextResolver.getGeneralValidator(AbstractValidatorContextResolver.java:40) [resteasy-hibernatevalidator-provider-3.0.9.Final.jar:]
at org.jboss.resteasy.plugins.validation.hibernate.AbstractValidatorContextResolver.getContext(AbstractValidatorContextResolver.java:54) [resteasy-hibernatevalidator-provider-3.0.9.Final.jar:]
at org.jboss.resteasy.plugins.validation.hibernate.ValidatorContextResolverCDI.getContext(ValidatorContextResolverCDI.java:16) [resteasy-hibernatevalidator-provider-3.0.9.Final.jar:]
at org.jboss.resteasy.cdi.JaxrsInjectionTarget.validate(JaxrsInjectionTarget.java:113) [resteasy-cdi-3.0.9.Final.jar:]
at org.jboss.resteasy.cdi.JaxrsInjectionTarget.inject(JaxrsInjectionTarget.java:67) [resteasy-cdi-3.0.9.Final.jar:]
at org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:297) [weld-core-1.1.31.Final-redhat-1.jar:1.1.31.Final-redhat-1]
at org.jboss.weld.context.unbound.DependentContextImpl.get(DependentContextImpl.java:68) [weld-core-1.1.31.Final-redhat-1.jar:1.1.31.Final-redhat-1]
at org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:626) [weld-core-1.1.31.Final-redhat-1.jar:1.1.31.Final-redhat-1]
at org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:653) [weld-core-1.1.31.Final-redhat-1.jar:1.1.31.Final-redhat-1]
at org.jboss.resteasy.cdi.CdiConstructorInjector.construct(CdiConstructorInjector.java:64) [resteasy-cdi-3.0.9.Final.jar:]
at org.jboss.resteasy.cdi.CdiConstructorInjector.construct(CdiConstructorInjector.java:69) [resteasy-cdi-3.0.9.Final.jar:]
at org.jboss.resteasy.plugins.server.resourcefactory.POJOResourceFactory.createResource(POJOResourceFactory.java:52) [resteasy-jaxrs-3.0.9.Final.jar:]
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:236) [resteasy-jaxrs-3.0.9.Final.jar:]
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:356) [resteasy-jaxrs-3.0.9.Final.jar:]
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:179) [resteasy-jaxrs-3.0.9.Final.jar:]
at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220) [resteasy-jaxrs-3.0.9.Final.jar:]
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56) [resteasy-jaxrs-3.0.9.Final.jar:]
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51) [resteasy-jaxrs-3.0.9.Final.jar:]
 ...

As you can see, the validation API is validation-api-1.0.0.GA-redhat-3.jar:1.0.0.GA-redhat-3 which means that the JBoss bundled module is not actually removed from the classpath. Am I doing something wrong or is it a bug which doesn't let me remove javax.validation.api? Do I need to replace more modules with manual dependencies (e.g. resteasy)?

解决方案

JBoss EAP 6.x is a JEE6 implementation container. Also keep in mind that changing the bean validation modules that are shipped with JBoss EAP6 breaks the supported bits.

Bean Validation is part of JEE7 specification. You will need to upgrade to JBoss EAP7 or use WildFly 9 or 10 from the community. Both of them implement JEE7 spec which includes Bean Validation 1.1.

这篇关于如何在JBoss 6.4中禁用javax.validation.api的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆