日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

tomcat两个项目冲突

發布時間:2023/12/6 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tomcat两个项目冲突 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java.lang.IllegalStateException: Web app root system property already set to different value

最近在搭建項目環境的時候出現了下面的錯誤

java.lang.IllegalStateException: Web app root system property already set to different value: 'webapp.root' = [D:/tomcat-5.0.19/webapps/tzbms/] instead of [D:/tomcat-5.0.19/webapps/its/] - Choose unique values for the 'webAppRootKey' context-param in your web.xml files!

?

后來查了資料才知道

webAppRootKey是在java web項目的web.xml配置文件中表示項目的唯一標示,Eclipse調試Web項目時,項目的路徑是一個臨時路徑,不在真正的路徑下,可以通過log4j日志的方式打印出屬性值,來看看臨時項目路徑在哪里,可以用System.getProperty("web.sample.root");如果web.xm 內沒有設置webAppRootKey項,是為默認設置,那么webAppRootKey就是缺省的"webapp.root"。

下面是相關源碼

1.???? ·??public??static??void??setWebAppRootSystemProperty(ServletContext?servletContext)?throws??IllegalStateException??{

2.???? ????????String??param?=?servletContext.getInitParameter(WEB_APP_ROOT_KEY_PARAM);

3.???? ????????String??key?=?(param?!=?null????param?:?DEFAULT_WEB_APP_ROOT_KEY);

4.???? ????????String??oldValue?=?System?.getProperty(key);

5.???? ????????if??(oldValue?!=?null?)?{

6.???? ????????????throw??new??IllegalStateException?("WARNING:?Web?app?root?system?property?already?set:?"??+?key?+?"?=?"??+

7.???? ????????????????????????????????????????????????????????????????

8.???? ?

9.???? ????????????oldValue?+?"?-?Choose?unique?webAppRootKey?values?in?your?web.xml?files!"?);

10.?? ????????}

11.?? ????????String??root?=?servletContext.getRealPath("/"?);

12.?? ????????if??(root?==?null?)?{

13.?? ????????????throw??new??IllegalStateException?("Cannot?set?web?app?root?system?property?when?WAR?file?is?not?

14.?? ?

15.?? expanded");

16.?? ????????}

17.?? ????????System?.setProperty(key,?root);

18.?? ????????servletContext.log("Set?web?app?root?system?property:?"??+?key?+?"?=?"??+?root);

19.?? ????}

20.?? ?

21.???


從代碼看出,該方法其實就是把該web?application的根目錄的絕對文件路徑作為屬性保存在 System的屬性列表中。該屬性的名字,由web.xml文件中的名為"webAppRootKey"的參數值指出。如果不在web.xml中定義 webAppRootKey參數,那么屬性名就是缺省的"webapp.root".

?

但最好設置,以免項目之間的名稱沖突。

?

?

Spring通過 org.springframework.web.util.WebAppRootListener 這個監聽器來壓入項目路徑。但是如果在web.xml中已經配置了 org.springframework.web.util.Log4jConfigListener
這個監聽器,則不需要配置WebAppRootListener了。因為Log4jConfigListener已經包含了WebAppRootListener的功能

部署在同一容器中的Web項目,要配置不同的<param-value>,不能重復

如果配置了
log4j.appender.file.File=${web.sample.root}/WEB-INF/logs/sample.log??

log4j會自己自動建立logs目錄, 不需要手工顯式建立空的logs目錄

?

?

解決方案:

在啟動出現錯誤的工程web.xml增加如下語句便可

<context-param>

<param-name>webAppRootKey</param-name>

<param-value> app.root </param-value>

</context-param>










本文轉自 yntmdr 51CTO博客,原文鏈接:http://blog.51cto.com/yntmdr/1981235,如需轉載請自行聯系原作者

總結

以上是生活随笔為你收集整理的tomcat两个项目冲突的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。