来自 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
开始,然后根据版本和文档,如果解决方案有效,你可以将它移动到适当的位置。
希望对您有所帮助。
我已经在 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
开始,然后根据版本和文档,如果解决方案有效,你可以将它移动到适当的位置。
希望对您有所帮助。