java.lang.IllegalStateException: Web app root system property already set to different value 异常解决办法

  • 先贴解决办法
    在web.xml里配置一个唯一的'webAppRootKey' ,这样就不会冲突了。
    名字随便叫, 最好是和工程名称相关的, 别再和别的工程冲突了就好
  <context-param>
    <param-name>webAppRootKey</param-name>
    <param-value>myapp-A.root</param-value>
  </context-param>
  • 错误起因
    在一个jboss的deployment的服务部署目录下放了两个工程的war包, 启动抛异常
    贴出一部分错误堆栈, 安全原因隐藏了三方件的版本信息和工程的包名称, 用A.war和B.war代替了:
JBWEB000287: Exception sending context initialized event to listener instance of class org.springframework.web.util.Log4jConfigListener: 
       java.lang.IllegalStateException: Web app root system property already set to different value: 'webapp.root' 
      = [/opt/jbshome/appserver/cmsServer1/tmp/vfs/temp/tempf3f4b51b442896b0/A.war-c1ce03fbdd37dff6/] 
       instead of [/opt/jbshome/appserver/cmsServer1/tmp/vfs/temp/tempf3f4b51b442896b0/B.war-5d98fb790815fc0f/] 
       - Choose unique values for the 'webAppRootKey' context-param in your web.xml files!
       at org.springframework.web.util.WebUtils.setWebAppRootSystemProperty(WebUtils.java:161) 
       at org.springframework.web.util.Log4jWebConfigurer.initLogging(Log4jWebConfigurer.java:119) 
       at org.springframework.web.util.Log4jConfigListener.contextInitialized(Log4jConfigListener.java:49) 
       at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:3339) 
       at org.apache.catalina.core.StandardContext.start(StandardContext.java:3780)
       at org.jboss.as.web.deployment.WebDeploymentService.doStart(WebDeploymentService.java:163) 
       at org.jboss.as.web.deployment.WebDeploymentService.access$000(WebDeploymentService.java:61) 
       at org.jboss.as.web.deployment.WebDeploymentService$1.run(WebDeploymentService.java:96) 
       at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
       at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
       at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_65]
       at org.jboss.threads.JBossThread.run(JBossThread.java:122)
  • 根本原因
    看异常堆栈, Log4jWebConfigurer在初始化日志的时候抛的异常
    日志自己已经说了很明白了
Web app root system property already set to different value: 'webapp.root' 
       = [/opt/jbshome/appserver/cmsServer1/tmp/vfs/temp/tempf3f4b51b442896b0/A.war-c1ce03fbdd37dff6/] 
        instead of [/opt/jbshome/appserver/cmsServer1/tmp/vfs/temp/tempf3f4b51b442896b0/B.war-5d98fb790815fc0f/] 
        - Choose unique values for the 'webAppRootKey' context-param in your web.xml files!

大意是webapp.root的值被A工程取了默认值, 导致和B工程产生了冲突
并且也提示了Choose unique values for the 'webAppRootKey' context-param in your web.xml files
也就是说我们可以在web.xml增加一个webAppRootKey值的配置就可以解决问题

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong阅读 22,763评论 1 92
  • 前言 本开发规范基于《阿里巴巴Java开发手册终极版》修改,并集成我们自己的项目开发规范,整合而成。 为表示对阿里...
    4ea0af17fd67阅读 10,951评论 0 5
  • 一、编程规约 (一)命名规约 【强制】 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。反...
    喝咖啡的蚂蚁阅读 5,424评论 0 2
  • 在自己的项目中使用了 PopupWindow (里面有 Spinner、Button 有种控件),编译运行后,发现...
    Gakki的伍记阅读 3,630评论 0 1
  • 暗夜虎啸 拒绝星光环绕 一如正午骄傲 三尺垂涎嗷嗷 五指俗世挠 七尺堂前折腰 黄发嘶嚎 不悲晴空寥寥 马蹄躁 尘埃...
    冯翩阅读 3,051评论 0 1

友情链接更多精彩内容