JBoss-如何在jboss-deployment-structure中排除javax.validation? [英] JBoss - How can to exclude javax.validation in jboss-deployment-structure?
问题描述
我有使用Jersey REST的.war,并且可以在tomCat中使用.但是我需要在JBoss 6.4.0中运行.war,这会导致异常
I have .war using Jersey REST, and it works in tomCat. But I need to run my .war in JBoss 6.4.0 which causes an exception
java.lang.RuntimeException: java.lang.NoSuchMethodError:
javax.validation.spi.ConfigurationState.getParameterNameProvider()
因为JBoss使用旧版本的javax.validation,所以我需要从JBoss部署中排除javax.validation.
because JBoss uses old version javax.validation, and I need to exclude javax.validation from deployment of JBoss.
我在.war的WEB-INF中创建 jboss-deployment-structure.xml :
I create jboss-deployment-structure.xml in WEB-INF of .war:
<?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?请帮助我
This helped me to exclude javax.ws.rs, but How can to exclude javax.validation? Help me, please
推荐答案
所以,这件事!可能对某人有帮助: JBoss中的库javax.validation.api-属于隐式模块,有关隐式模块的文档:
So, it is something! May be help to someone: Library javax.validation.api in JBoss - belongs to Implicit module, documentation about implicit module: implicit module dependencies
So implicit modules are Automatic Dependencies, and their can exclusion, about this: class lading and automatic dependencies - part about Automatic Dependencies: Automatic dependencies can be excluded through the use of jboss-deployment-structure.xml. But this is not work! :(, and JBoss has bug with similar library javax.persistence, and it bug open in tasks.
那么-该怎么办?
- 将JBoss更新为7.0.0版本,但现在仅是Alpha和Beta版本:(
- 在新版本.jar上替换旧的javax.validation.api .jar (在 EAP-6.4.0/modules/system/layers/base/javax/faces/api/main 中)
- 添加自定义版本,并且纠结在一起:
更改 EAP-6.4.0/modules/system/layers/base/javax/faces/api/main module.xml 文件中的默认配置,在
<module name="javax.validation.api" export="true"/>
行中删除选项export="true"
,结果:<module name="javax.validation.api"/>
进行了更改,以允许您添加新的自定义库javax.validation. 然后在 EAP-6.4.0/modules/system/layers/base/javax/validation/api 中创建名称为 1.1 的自定义文件夹,并放入 1.1 文件夹新的javax.validation .jar 和 model.xml .
- Update JBoss to 7.0.0 version, but now just Alpha and Beta versions :(
- Replace old javax.validation.api .jar on new version .jar (in EAP-6.4.0/modules/system/layers/base/javax/faces/api/main)
- Add custom version, and it tangled:
change default config in EAP-6.4.0/modules/system/layers/base/javax/faces/api/main module.xml file, in line
<module name="javax.validation.api" export="true"/>
remove optionexport="true"
, result:<module name="javax.validation.api"/>
This changed to allow you add a new custom library javax.validation. And create custom folder with name 1.1 in EAP-6.4.0/modules/system/layers/base/javax/validation/api, put in 1.1 folder new javax.validation .jar and model.xml.
model.xml:
model.xml:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="javax.validation.api" slot="1.1">
<resources>
<resource-root path="validation-api-1.1.0.Final.jar"/>
</resources>
<dependencies>
<module name="org.jboss.logging"/>
</dependencies>
</module>
参数: 插槽-名称自定义文件夹(1.1), path-.jar库的路径
params: slot - name custom folder (1.1), path - path to .jar library
最后:将模块添加到项目中的jboss-deployment-structure.xml:
Last: add module to jboss-deployment-structure.xml in project:
<dependencies>
<module name="javax.validation.api" slot="1.1" export="true"/>
</dependencies>
这篇关于JBoss-如何在jboss-deployment-structure中排除javax.validation?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!