需要从jboss 6.4模块中排除apache httpcomponent

时间:2016-02-09 08:10:32

标签: java jboss jboss-eap-6

我们最近已从 jboss 6.1 eap 迁移到 6.4 eap ,但遇到了类加载问题。

在我的项目库中我们需要使用apache httpcore 4.4.1 ,但 apache httpcore 4.3.3 包含在 6.4。中我们使用 jboss 6.1 之前不是问题,因为resteasy-jaxrs module.xml没有导出httpcore库。

现在有了jboss 6.4,我们得到了例外:

Caused by: java.lang.NoSuchMethodError: org.apache.http.util.Asserts.check(ZLjava/lang/String;Ljava/lang/Object;)V

因为运行时我的项目是使用jboss提供的jar,而且没有这个方法需要签名。

现在我想强制我的应用程序不使用jboss jar并使用web-inf / lib文件夹中提供的jar。

我试图通过jboss-deployment-structure.xml排除这个问题,但不管怎么说它不起作用,而且它仍然只使用jboss的jar。

下面的

是jboss-deployment-structure.xml文件的快照。

<deployment>
        <exclusions>
            <module name="org.apache.httpcomponents" />
        </exclusions>

         <dependencies>
             module name="org.apache.httpcomponents" />
        </dependencies>
</deployment>

有人可以帮我解决这里缺少的东西,或者有什么替代方案......

2 个答案:

答案 0 :(得分:3)

由于您使用的是JBoss EAP,因此您可以为EAP 6.4应用CP07补丁(因此您的版本将是JBoss EAP 6.4.7),此问题已得到解决。我强烈建议使用CP07补丁。

或者,您可以在$output = file_get_contents('http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['SCRIPT_NAME']).'/index.php'); $file = fopen('new_text.txt', 'w'); fwrite($file, $output); fclose($file); 中设置<module name="org.apache.httpcomponents" export="false"/>

但是,我建议将补丁应用为推荐的解决方案。这样您就不会修改产品附带的配置。

答案 1 :(得分:1)

要解决此问题,我们可以采取以下方法之一。

  1. 更改$ JBOSS_MODULES \ org \ jboss \ resteasy \ resteasy-jaxrs \ main \ module.xml suggested作为CoolBeans

  2. 如果您无法控制(或未授权)更新Jboss服务器配置,则可以使用以下选项。

  3. jboss-deployment-structure.xml 文件中添加以下xml配置

    enter image description here

    <?xml version="1.0" encoding="UTF-8"?>
    <jboss-deployment-structure>
        <deployment>
            <exclude-subsystems>
                <subsystem name="resteasy"/>
                <subsystem name="jaxrs"/>
            </exclude-subsystems>
            <!-- Exclusions allow you to prevent the server from automatically adding 
                some dependencies -->
            <exclusions>
    
    
                <module name="javax.ws.rs.api"/>
                <module name="org.jboss.as.jaxrs"/>
                <module name="org.jboss.resteasy.resteasy-atom-provider" />
                <module name="org.jboss.resteasy.resteasy-cdi" />
                <module name="org.jboss.resteasy.resteasy-jaxrs" />
                <module name="org.jboss.resteasy.resteasy-jaxb-provider" />
                <module name="org.jboss.resteasy.resteasy-jackson-provider" />
                <module name="org.jboss.resteasy.resteasy-jackson2-provider" />
                <module name="org.jboss.resteasy.resteasy-jsapi" />
                <module name="org.jboss.resteasy.resteasy-multipart-provider" />
                <module name="org.jboss.resteasy.async-http-servlet-30" />
                <module name="org.jboss.resteasy.resteasy-hibernatevalidator-provider" />
                <module name="org.jboss.resteasy.resteasy-jettison-provider" />
                <module name="org.jboss.resteasy.resteasy-spring" />
                <module name="org.jboss.resteasy.resteasy-yaml-provider" />
    
    
            </exclusions>
            <dependencies>
    
    
            </dependencies>
        </deployment>
    </jboss-deployment-structure>
    

    这对我有用,希望这适用于其他