JBoss-如何在JBoss部署结构中排除javax.validation?
我有。战争用球衣休息,它在tomCat中起作用。但是我需要在JBoss 6.4.0中运行.war,这会导致一个异常JBoss-如何在JBoss部署结构中排除javax.validation?,java,deployment,jboss,Java,Deployment,Jboss,我有。战争用球衣休息,它在tomCat中起作用。但是我需要在JBoss 6.4.0中运行.war,这会导致一个异常 java.lang.RuntimeException: java.lang.NoSuchMethodError: javax.validation.spi.ConfigurationState.getParameterNameProvider() 因为JBoss使用旧版本javax.validation,我需要从JBoss的部署中排除javax.validation 我在.war
java.lang.RuntimeException: java.lang.NoSuchMethodError:
javax.validation.spi.ConfigurationState.getParameterNameProvider()
因为JBoss使用旧版本javax.validation,我需要从JBoss的部署中排除javax.validation
我在.war的WEB-INF中创建了jboss部署结构.xml:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<exclude-subsystems>
<subsystem name="resteasy" />
<subsystem name="jpa"/>
<subsystem name="org.hibernate" />
<subsystem name="org.hibernate.validator" />
</exclude-subsystems>
<exclusions>
<module name="javaee.api" />
<module name="javax.ws.rs.api"/>
<module name="org.jboss.resteasy.resteasy-jaxrs"/>
<module name="javax.validation.api"/>
<module name="org.hibernate"/>
<module name="org.hibernate.validator"/>
</exclusions>
</deployment>
</jboss-deployment-structure>
这帮助我排除了javax.ws.rs,但是如何排除javax.validation呢?请帮帮我所以,这很重要!可能对某人有帮助: JBoss中的Library javax.validation.api-属于隐式模块,关于隐式模块的文档: 因此隐式模块是自动依赖项,它们可以排除,关于这个:-部分关于自动依赖项: 可以通过使用jboss-deployment-structure.xml排除自动依赖项。但这不是工作(,JBoss有类似javax.persistence库的bug,它在任务中打开bug 那么,我们能做些什么呢
删除选项export=“true”
,结果:
此更改允许您添加新的自定义库javax.validation。
并在EAP-6.4.0/modules/system/layers/base/javax/validation/api中创建名为1.1的自定义文件夹,放入1.1文件夹new javax.validation.jar和model.xml
参数:
插槽-名称自定义文件夹(1.1),
path-指向.jar库的路径
最后:将模块添加到项目中的jboss-deployment-structure.xml中:
<dependencies>
<module name="javax.validation.api" slot="1.1" export="true"/>
</dependencies>
好的,所以您不仅需要排除
<module name="javax.validation.api"/>
查看哪些模块依赖于javax.validation.api模块并强制将其包括在内(即使已排除),最简单的方法是在中搜索.xml文件
JBOSS_目录/modules for javax.validation.api,依赖的模块类似于module.xml中的模块:
<dependencies>>
<module name="javax.validation.api"/>
...
>
...
这些模块也需要排除。对我来说,我还需要排除:
<module name="javax.faces.api"/>
<module name="org.jboss.resteasy.resteasy-hibernatevalidator-provider"/>
然后,javaxvalidationeclusion开始工作:)这实际上是可能的,但是您还需要排除依赖于验证模块的模块。
<module name="javax.faces.api"/>
<module name="org.jboss.resteasy.resteasy-hibernatevalidator-provider"/>