tomcatec出错-Web app root system property already set to different value

2024-08-30 02:32

本文主要是介绍tomcatec出错-Web app root system property already set to different value,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

因为一些原因要对比两个项目工程中的区别,因此我想在我的tomcat上同时部署这两个项目。可是发布两个项目启动tomcat服务器时报错了。
错误信息如下:
Web app root system property already set to different value: 'webapp.root' = [C:\tomcat7.059\webapps\POM\] instead of [C:\tomcat7.059\webapps\pom-web\] - Choose unique values for the 'webAppRootKey' context-param in your web.xml files! 
网上查找了一个解决方法可以解决这个问题:


解决方法:


请注意${webapp.root}这个变量 ,对照着错误提示大概看了一下,意思是说Web应用程序根系统属性已经被设置,说白了就是说'webapp.root' 这个配置名称已经被使用了,不能再用这个了,
并且也提示了Choose unique values for the 'webAppRootKey' context-param in your web.xml files ,也就是说我们可以在web.xml里配置一个唯一的'webAppRootKey' ,这样就不会冲突了。
 
这个问题会出现在一个WEB服务器同时部署多个使用了Log4j的应用上,如果配置不当,出这个错误还真会让你郁闷到抓狂。我就是出这个问题了,一个Tomcat部署了2个使用了Log4j的项目。
 
然后我这样解决:按给的提示在web.xml里加上
Java代码  收藏代码
<context-param>  
    <param-name>webAppRootKey</param-name>  
    <param-value>myapp.root</param-value>  
</context-param>  


<!--  解决一个web服务器上部署多个Log4j应用出现错误的问题 -->
<context-param>  
    <param-name>webAppRootKey</param-name>  
    <param-value>pom-web.root</param-value>  
</context-param> 




 然后在 log4j.properties里就写成${myapp.root},只要这个名称不重复,就不会产生Web app root system property already set to different value的错误了。虽然正式使用时一台服务器部署多个应用程序的情况会比较少,但是还是保险起见吧,也对我们的程序相关的命名标准化吧,把
 ${webapp.root}改成${[应用程序].root}。


http://yzxqml.iteye.com/blog/1761540


----------------
上面的问题解决后,两个项目工程代码发布以及启动tomcat后控制台都没有出错。可是访问项目页面时控制台会出现错误:信息如下
java.lang.OutOfMemoryError: PermGen space
内存永久区域溢出。 这个问题从没有遇到过。百度到的方法,也已解决这个问题。


---------------------------------------------------
 PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决方法也一定是加大内存。说说为什么会内存益出:这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。改正方法:-Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m 2、在tomcat中redeploy时出现outofmemory的错误. 可以有以下几个方面的原因: 
 1,使用了proxool,因为proxool内部包含了一个老版本的cglib. 
 2, log4j,最好不用,只用common-logging 
 3, 老版本的cglib,快点更新到最新版。
 4,更新到最新的hibernate3.2 3、


解决过程:


解决OutOfMemoryError: PermGen space,过程是痛苦的,结果是舒畅的


最近自己的程序在Redeploy重新部署的时候,老提示OutOfMemoryError: PermGen space错误,在网络上搜索了相关的资料,但是按照做后还是存在这个问题。由于我是第一次碰到这个问题,花费了我2天时间,过程比较痛苦,结果还是比较圆满的。我将我的经历写下来,供我自己以后参考,也提供给大家分享。


在网络上关于OutOfMemoryError: PermGen space的解决办法很多了,但是有的办法都是互相转发,真假难辨。有的可能还产生误导。


我的环境是Myeclips 8.5、tomcat6.x,试过了很多办法后,比如:文档《Linux 和 Windows修改Java虚拟机内存大小》(http://duanfei.iteye.com/blog/1189541),中的办法,我都试过了,还是不行;当然还参考了很多其他资料,然后进一步研究JVM的优化等,我就是想知道我配置的内存参数应该够大了,为什么还是溢出,难道没有生效,那我就需要找到配置后系统认可的内存参数是多少,参考网络上的知识,启动了JDK自带的工具,在\jdk1.6.0_10\bin下面的jconsole.exe内存监控的工具,点击进入如下:选择PID为4472的这个进程,


点击 ,进入如下界面,


选择内存页,并且选择图表中最后一个选项的“内存池“Perm Gen”,下面的详细信息显示的是:
这个地方的最大值是65536Kb,也就是64M,我于是就找到原因了,64M肯定会导致溢出,但是我配置了几百兆的内存空间就是不生效呢。注意,这个是我在myclipse中启动的tomcat看到的结果。
接下来,我进入bin/catalina.bat文件中的“rem ----- Execute The Requested Command -”这个后面增加了下面的语句set JAVA_OPTS=%JAVA_OPTS% -Xms256m -Xmx1024m -XX:PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=512m,这个地方注意增加的位置是在rem ----- Execute The Requested Command –后面,最好set JAVA_OPTS=%JAVA_OPTS% 这个也要加上,这个网络上好多文档没有将这个位置交代清楚,或者说的不是这个地方,是不是其他地方也可以,我没有试。我手工启动tomcat,在cmd状态下输入:startup,然后看jconsole.exe,明细Perm Gen的内存就是我配置的内存521M,是生效了的.
但是我在myclipse中启动tomcat后,重新部署程序,错误依旧。原来文档《Linux 和 Windows修改Java虚拟机内存大小》(http://duanfei.iteye.com/blog/1189541)中提到
如果是通过Myeclipse启动Tomcat修改
Myeclipse配置选项 打开选项..输入tomcat关键字,然后点开Server下面的JDK就会出现配置区域Optional Java VM arguments.


直接加入 -Xms128m -Xmx512m 
这个地方是有一个漏洞的,直接加入 “-Xms128m -Xmx512m ”,应该是“ -Xms256m -Xmx512m -XX:PermSize=256m -XX:MaxPermSize=512m”,这个是对myclipse生效的。如果没有-XX:PermSize=256m -XX:MaxPermSize=512m,那么PermGen的内存始终是64M。修改后,重启tomcat,重新部署,内存不再溢出了。
我的机器上是:Servers/Tomcat/Tomcat 6.x/JDK 中的Optional Java VM arguments:
找到了原因,解决也就自然很简单了。
注意这个地方Servers/Tomcat/Tomcat 6.x 这个地方还有一个参数:Optional program arguments,这个感觉作用不大,我也是修改后没有什么效果,我以为修改这个地方就可以了,导致我走了弯路。




http://blog.csdn.net/fengyie007/article/details/1780375/
----------------------------------------------------


之后两个项目成功的部署在tomcat上,运行也正常,可以愉快的玩耍了。。。。

这篇关于tomcatec出错-Web app root system property already set to different value的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1119553

相关文章

Java Web指的是什么

Java Web指的是使用Java技术进行Web开发的一种方式。Java在Web开发领域有着广泛的应用,主要通过Java EE(Enterprise Edition)平台来实现。  主要特点和技术包括: 1. Servlets和JSP:     Servlets 是Java编写的服务器端程序,用于处理客户端请求和生成动态网页内容。     JSP(JavaServer Pages)

poj 3050 dfs + set的妙用

题意: 给一个5x5的矩阵,求由多少个由连续6个元素组成的不一样的字符的个数。 解析: dfs + set去重搞定。 代码: #include <iostream>#include <cstdio>#include <set>#include <cstdlib>#include <algorithm>#include <cstring>#include <cm

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

Collection List Set Map的区别和联系

Collection List Set Map的区别和联系 这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。 有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否

9.8javaweb项目总结

1.主界面用户信息显示 登录成功后,将用户信息存储在记录在 localStorage中,然后进入界面之前通过js来渲染主界面 存储用户信息 将用户信息渲染在主界面上,并且头像设置跳转,到个人资料界面 这里数据库中还没有设置相关信息 2.模糊查找 检测输入框是否有变更,有的话调用方法,进行查找 发送检测请求,然后接收的时候设置最多显示四个类似的搜索结果

JavaWeb【day09】--(Mybatis)

1. Mybatis基础操作 学习完mybatis入门后,我们继续学习mybatis基础操作。 1.1 需求 需求说明: 根据资料中提供的《tlias智能学习辅助系统》页面原型及需求,完成员工管理的需求开发。 通过分析以上的页面原型和需求,我们确定了功能列表: 查询 根据主键ID查询 条件查询 新增 更新 删除 根据主键ID删除 根据主键ID批量删除

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

利用Django框架快速构建Web应用:从零到上线

随着互联网的发展,Web应用的需求日益增长,而Django作为一个高级的Python Web框架,以其强大的功能和灵活的架构,成为了众多开发者的选择。本文将指导你如何从零开始使用Django框架构建一个简单的Web应用,并将其部署到线上,让世界看到你的作品。 Django简介 Django是由Adrian Holovaty和Simon Willison于2005年开发的一个开源框架,旨在简

web群集--nginx配置文件location匹配符的优先级顺序详解及验证

文章目录 前言优先级顺序优先级顺序(详解)1. 精确匹配(Exact Match)2. 正则表达式匹配(Regex Match)3. 前缀匹配(Prefix Match) 匹配规则的综合应用验证优先级 前言 location的作用 在 NGINX 中,location 指令用于定义如何处理特定的请求 URI。由于网站往往需要不同的处理方式来适应各种请求,NGINX 提供了多种匹