来自 apache commons 的 httpclient 无法在 jboss 上工作

httpclient from apache commons not working on jboss

我已经在 maven 项目中通过 slf 和 jcl 设置了 logback。我还删除了对 commons-logging 的所有依赖。日志系统按预期工作,但 jboss 上的 org.apache.http.wire http 客户端除外,但它在 tomcat 上工作正常。

我的专家的片段是: org.apache.httpcomponents http客户端 4.5 公共日志 公共日志

<!--Logging-->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
</dependency>

已编辑:我还添加了 jboss-部署结构

<deployment>
    <exclude-subsystems>
        <subsystem name="jpa"/>
    </exclude-subsystems>
    <exclusions>
        <module name="javaee.api"/>
        <module name="org.apache.commons.logging"/>
        <module name="org.slf4j"/>
        <module name="org.slf4j.impl"/>
        <module name="org.slf4j.ext"/>
        <module name="org.slf4j.jcl-over-slf4j"/>
        <module name="org.apache.log4j"/>
        <module name="org.jboss.logging.jul-to-slf4j-stub"/>
    </exclusions>
</deployment>

可能的解决方案是使 commons-logging 与 logback 并行工作并使用另一个文件。

我们的 jboss 版本是: Red Hat JBoss 企业应用程序平台 - 版本 6.4。3.GA

解决方案取决于 Jboss 版本并且可能更复杂。假设 7xx 版本 org.apache.commons.logging 模块是一个隐式依赖并且默认加载。 更多细节在这里: https://docs.jboss.org/author/display/AS7/Implicit+module+dependencies+for+deployments

如果你想排除这个模块,你必须创建 jboss-deployment-structure.xml 文件(未测试示例):

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <exclusions>
            <module name="org.apache.commons.logging" />
        </exclusions>
    </deployment>
</jboss-deployment-structure>

您可以在以下位置找到更多信息: https://docs.jboss.org/author/display/AS7/Class+Loading+in+AS7

请尝试将 slf4j(或任何其他日志记录框架)依赖项放入 JBOSS 启动类路径 。在您部署应用程序 (WAR/EAR) 之前,日志系统很可能已经初始化。 这可以是服务器的 lib 目录或服务器的 endorsed 目录。你可以把它放在 lib 开始,然后根据版本和文档,如果解决方案有效,你可以将它移动到适当的位置。

希望对您有所帮助。