如何在JBoss 6.4中禁用javax.validation.api

类似的问题:

如何在JBoss EAP 6.4.0中使用beanvalidation1.1?

如何在jboss EAP 6.3上更改beanvalidation版本?

你能在JBoss EAP 6.4.4中使用beanvalidation1.1(JSR 349)吗?

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

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

                           <!---->                  

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

  javax.validation validation-api 1.1.0.Final   org.hibernate hibernate-validator 5.2.2.Final  

但我得到以下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:] ... 

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

JBoss EAP 6.x是一个JEE6实现容器。 还要记住,更改JBoss EAP6附带的beanvalidation模块会破坏支持的位。

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

我已经validation了Redhat支持给出的答案 –

您可以通过排除jaxrs子系统从JBoss EAP 6中排除JBoss提供的javax.validation api类。

除了排除validation类本身之外,还应该排除依赖于它们的模块。 因此,jboss-deployment-structure.xml的排除部分应如下所示:

          

*注意 – 不包括javaee模块限制RedHat提供的可用支持

对于jboss 6.2,我想使用cxf和beanvalidation1.1,之前的答案对我来说没有用,为了让它先工作我必须排除所有的依赖关系,然后再添加javee.api,不包括导入到javax包,如下所示:

                         

然后重复我耳朵的子部署。