当前位置: 首页 > 图文教程 > 服务器 > JBOSS > 解决jboss和log4j冲突

JBOSS
JBoss
一个关于jboss "Halting VM"的情况处理
开源软件也挣钱 谈JBoss技术架构与服务
设计美好的服务器II--站在JBoss MicroKernel上
在jboss中运行opencms
熟悉JBoss的目录结构
分析Hibernate的事务处理机制
JBoss扫盲帖
HQL: Hibernate查询语言(转自官方网站)
如何查找JBoss所发布的JNDI资源
JBoss野心勃勃的Web Beans
使用javaService将jboss启动 关闭添加到windows的服务
安装配置Jboss
Jboss 性能调整
解决jboss和log4j冲突
超经典的JBOSS入门文章
JBoss应用服务器的现状与展望
把WebLogic EJB程序迁移到JBoss上
Jboss下MS SQL Server配置指导
JBOSS维护经验

JBOSS 中的 解决jboss和log4j冲突


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 403 ::
收藏到网摘: n/a

解决jboss和log4j冲突的最理想配置如下:

1.配置$JBOSS-HOME/server/default/deploy/jbossweb-tomcat55.sar/META-INF/jboss-service.xml
文件里的Java2ClassLoadingCompliance及UseJBossWebLoader为false
如果你的应用下存在WEB-INF/jboss-web.xml,则里面的java2ClassLoadingCompliance及java2ParentDelegaton属性也都设置成false。

2.配置$JBOSS-HOME/server/default/jboss-service.xml中的org.jboss.logging.Log4jService的设置中加个属性:<attribute name="CatchSystemOut">false</attribute>即可
如下:
<mbean code="org.jboss.logging.Log4jService" name="jboss.system:type=Log4jService,service=Logging">
<attribute name="ConfigurationURL">resource:log4j.xml</attribute>
<attribute name="CatchSystemOut">false</attribute>
<attribute name="Log4jQuietMode">true</attribute>
</mbean>

3.建立一个用于初始化的 InitServlet ,在init方法指定log4j读取我们应用下的的log4j.properties文件,代码如:
    public void init(ServletConfig config) throws ServletException {
        PropertyConfigurator.configure(config.getServletContext().getRealPath("/")
    "WEB-INF/classes/log4j.properties");
    }

 然后在 web.xml 配置这个 Servlet 的初始化参数(声明 log4j.properties 的位置)和启动优先级:
  <servlet>
    <servlet-name>InitServlet</servlet-name>
    <servlet-class>InitServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>


4.把jboss的jboss-common.jar($JBOSS-HOME/lib目录下)复制到你的应用/WEB-INF/lib目录下。


通过这样的配置后,webapp的log4j和jboss的log4j将相互隔离互不影响,在jboss.4.0.5下测试通过,并做的总结