Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >tomcat同时部署两个项目的问题

tomcat同时部署两个项目的问题

作者头像
用户5640963
发布于 2019-07-26 04:42:53
发布于 2019-07-26 04:42:53
1.5K0
举报
文章被收录于专栏:卯金刀GG卯金刀GG

一个tomcat加载两个项目,报错如下:

严重: 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' = [/home/ghw/apache-tomcat-7.0.75/webapps/qazitem/] instead of [/home/ghw/apache-tomcat-7.0.75/webapps/qazapp/] - 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>

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ServletContext与Web应用以及Spring容器启动
Servlet容器在启动时会加载Web应用,并为每个Web应用创建唯一的ServletContext对象。
良月柒
2019/03/20
9510
ServletContext与Web应用以及Spring容器启动
tomcat发布两个项目报错webAppKey重复设置
org.springframework.web.util.Log4jConfigListener
一笠风雨任生平
2019/08/02
6620
Log4jConfigListener动态改变记录级别及实现
摘要: 线上的系统出现了bug,可能是请求的数据出现了问题,这个时候,日志就为我们提供了解决问题的办法。但是线上的产品系统,一般的优先级都在INFO之上,如果修日日志级别,获取丰富的信息,可能需要重启服务,对线上的影响比较大。如何能做到 动态的修改日志的级别,而且不用重启服务,对线上环境的影响减少到最小呢?Log4jConfigListener就上场了
我的小碗汤
2018/08/22
6370
web.xml的加载过程配置详解
  简单说一下,web.xml的加载过程。当我们启动一个WEB项目容器时,容器包括(JBoss,Tomcat等)。首先会去读取web.xml配置文件里的配置,当这一步骤没有出错并且完成之后,项目才能正常的被启动起来。
全栈程序员站长
2022/09/17
2.2K0
web.xml的加载过程配置详解
Log4j详细使用教程
日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j 可以免费下载到Log
java达人
2018/01/31
1K0
Log4j详细使用教程
面试之Spring的启动原理
为什么突然说一下Spring启动原理呢,因为之前面试的时候,回答的那可谓是坑坑洼洼,前前后后,补补贴贴。。。
Java技术债务
2022/08/09
2870
面试之Spring的启动原理
【tomcat】不同域名解析到同一tomcat不同项目上 windows 环境下nginx + tomcat群 + redis 实现session共享
        1.首先把所有域名都解析到这台服务器上,解析时只能填写ip地址,不能指定端口的,默认访问解析IP的80端口
肖哥哥
2019/02/22
1.3K0
【tomcat】不同域名解析到同一tomcat不同项目上
		windows 环境下nginx + tomcat群 + redis 实现session共享
Spring项目路径
Spring源码——WebUtils 个人网站中部署的服务器共有两台,由于是分布式的环境,为了防止有效的针对具体某个服务器出现的问题,需要在网页上加上服务器的IP地址和项目启动的时间,但是由于资源的问
Zephery
2018/03/12
1.1K0
Spring项目路径
WebXml文件与SpringMVC的联系
无论采用何种框架来进行Java Web的开发,只要是Web项目必须在WEB-INF下有web.xml,这是java规范。 当然,我们最早接触到Java Web容器通常是tomcat,但这并不意味着web.xml是属于Tomcat的,同样,Servlet本身也不属于Tomcat,它与JSP等是Java Web的基础规范。而Servlet的运行需要有Servlet容器的支持,常见的容器有Tomcat、Jetty、JBoss等。
w4ngzhen
2023/10/16
3780
WebXml文件与SpringMVC的联系
Spring-Spring Web项目中配置使用Log4j 2
Web容器中的监听 Log4jConfigListener在 Spring 4.2.1及以后被废弃。
小小工匠
2021/08/16
1.2K0
Spring学习笔记(4)一SpringMVC启动原理和WebApplicationContext
在分析SpringMVC框架具体组件之前,我们先了解Spring WebApplicationContext。
黄规速
2022/04/14
6140
Spring学习笔记(4)一SpringMVC启动原理和WebApplicationContext
Spring常用工具类
( http://www.ibm.com/developerworks/cn/java/j-lo-spring-utils1/index.html )
BUG弄潮儿
2022/06/30
6100
【小家Spring】Spring MVC好用工具介绍:UrlPathHelper、WebUtils、RequestContextUtils、WebApplicationContextUtils...
随着struts2漏洞的出现,以及struts2使用的不方便,过重的设计。所以市面上MVC的实际标已经成了Spring MVC。
YourBatman
2019/09/03
1.6K0
【小家Spring】Spring MVC好用工具介绍:UrlPathHelper、WebUtils、RequestContextUtils、WebApplicationContextUtils...
SSM框架——Spring+SpringMVC+Mybatis的搭建教程
一:概述 SSM框架在项目开发中经常使用到,相比于SSH框架,它在仅几年的开发中运用的更加广泛。
全栈程序员站长
2022/02/27
7620
SSM框架——Spring+SpringMVC+Mybatis的搭建教程
解读 Servlet 源码:GenericServlet,ServletConfig,ServletContext
Servlet 必须重写的五方法分别为:init(),service(ServletRequest request, ServletResponse response),getServletConfig(),getServletInfo(),destroy(),还有一个无参构造器 什么时候创建的,什么时候调用的,什么时候销毁的。
RainbowSea
2023/03/20
7980
log4j使用方法_pipe使用教程
地址:http://www.codeceo.com/log4j-usage.html
全栈程序员站长
2022/10/04
6570
log4j使用方法_pipe使用教程
spring源码分析 contextConfigLocation属性的位置
<context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/config/application-context.xml /WEB-INF/config/cache-context.xml /WEB-INF/config/captcha-context.xml /WEB-
陈灬大灬海
2018/09/12
1.8K0
spring源码分析 contextConfigLocation属性的位置
WebUtils工具类解析
WebUtils根据名称,知道是Spring当中一个工具类,主要用于Web应用程序,供各种框架使用。
Twcat_tree
2022/11/30
1.4K0
Spring-WebApplicationContext解读
WebApplicationContext是专门为web应用准备的,它允许从相对于Web根目录的路径中装载资源配置文件完成初始化工作。
小小工匠
2021/08/16
1.3K0
web.xml基本配置。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
用户1220053
2018/04/17
7070
相关推荐
ServletContext与Web应用以及Spring容器启动
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档