tomcat下多應用log4j衝突:Web app root system property already set to different value

問題現象

在tomcat下部署多個應用並且同時配置相同的log4j,啓動時報如下異常:

java.lang.IllegalStateException: Web app root system property already set to different value: 'webapp.root' = *********
Choose unique values for the 'webAppRootKey' context-param in your web.xml files!  

問題分析

webAppRootKey是在java web項目的web.xml配置文件中表示項目的唯一標示。如果web.xm 內沒有設置webAppRootKey項,是爲默認設置,那麼webAppRootKey就是缺省的”webapp.root”。
對照着錯誤提示大概看了一下,意思是說Web應用程序根系統屬性已經被設置,說白了就是說’webapp.root’ 這個配置名稱已經被使用了,不能再用這個了,
並且也提示了Choose unique values for the ‘webAppRootKey’ context-param in your web.xml files ,也就是說我們可以在web.xml裏配置一個唯一的’webAppRootKey’ ,這樣就不會衝突了。
這個問題會出現在一個WEB服務器同時部署多個使用了Log4j的應用上。

示例如下:

### app1:
<context-param>
    <param-name>webAppRootKey</param-name>
    <param-value>app1.root</param-value>
</context-param>

### app2:
<context-param>
    <param-name>webAppRootKey</param-name>
    <param-value>app2.root</param-value>
</context-param>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章