Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JBoss-如何在JBoss部署结构中排除javax.validation?_Java_Deployment_Jboss - Fatal编程技术网

JBoss-如何在JBoss部署结构中排除javax.validation?

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

我有。战争用球衣休息,它在tomCat中起作用。但是我需要在JBoss 6.4.0中运行.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

那么,我们能做些什么呢

  • 将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/mainmodule.xml文件的第行
    删除选项
    export=“true”
    ,结果:
    此更改允许您添加新的自定义库javax.validation。 并在EAP-6.4.0/modules/system/layers/base/javax/validation/api中创建名为1.1的自定义文件夹,放入1.1文件夹new javax.validation.jarmodel.xml
  • 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"/>