升级log4j2,tomcat--7.0.16 启动就OOM,蛋疼的问题

简介: 升级log4j2 ,官网说要web.xml里的 version 属性改成3.0,发现改了之后,一起动就报错OOM, Exception in thread "main"  Exception: java.

升级log4j2 ,官网说要web.xml里的<web-app> version 属性改成3.0,发现改了之后,一起动就报错OOM,

Exception in thread "main" 
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "main"


发现改成2.5就没事:

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  version="2.5"

  >  


,或者加一个属性  metadata-complete=true 也没事:

  <web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0"
  metadata-complete="true"
  >  


或者,换成 tomcat-7.0.81也没事,

真是日了狗了,这种问题网上没答案 只有靠自己研究了,折腾了好长时间


这个属性的作用如下:

Attribute : metadata-complete
The metadata-complete attribute defines whether this deployment descriptor and other related 
 deployment descriptors for this module (e.g., web service descriptors) are complete, or whether the 
 class files available to this module and packaged with this application should be examined for 
 annotations that specify deployment information. If metadata-complete is set to "true", the 
 deployment tool must ignore any annotations that specify deployment information, which might be 
 present in the class files of the application. If metadata-complete is not specified or is set to "false", 
 the deployment tool must examine the class files of the application for annotations, as specified by 
 the specifications.



猜测 是 2.5 没有采用java注解配置servlet,listener,filter....的特性,tomcat--7.0.16不会扫描java类的class,version=3.0 加上一个metadata-complete=true  属性也能阻止扫描

改成3.0  tomcat--7.0.16就会去扫描这些有servlet注解的 class,可能在这个过程中导致了OOM

而 tomcat--7.0.81 可能修复了这个问题



好复杂。。。。。。。。。。。。。。。。。

目录
相关文章
|
2天前
|
应用服务中间件 Shell
tomcat版本自动升级脚本
请注意,这只是一个简单的示例脚本,用于演示自动升级Tomcat版本的思路。实际部署中,您可能需要根据您的环境和需求对脚本进行更详细的定制和错误处理。确保在升级Tomcat版本之前备份重要数据和配置文件,以防止意外情况发生。
19 0
|
2天前
|
前端开发 Java 应用服务中间件
springboot 升级(1.5.7.RELEASE升级到2.7.10) Tomcat启动报错
springboot 升级(1.5.7.RELEASE升级到2.7.10) Tomcat启动报错
|
Kubernetes 负载均衡 Java
Kubeadm 升级 k8s 至 v1.17.4及运行 nginx+tomcat 并实现动静分离 | 学习笔记
快速学习 Kubeadm 升级 k8s 至 v1.17.4及运行 nginx+tomcat 并实现动静分离
280 0
|
Kubernetes Java 应用服务中间件
|
应用服务中间件
tomcat升级版本为8.5.68后.启动报错: java.lang.IllegalArgumentException: AJP连接器配置secretRequired=“true”
ttomcat升级版本为8.5.68后.启动报错: java.lang.IllegalArgumentException: AJP连接器配置secretRequired=“true” 属性secret确实为空 1.tomcat启动报错内容如下
794 0
tomcat升级版本为8.5.68后.启动报错: java.lang.IllegalArgumentException: AJP连接器配置secretRequired=“true”
|
Java 应用服务中间件 测试技术
玩大发了,Tomcat 8.5 升级有坑…
最近某全系统做了环境升级: Tomcat 8.5.x JDK 1.8.x
玩大发了,Tomcat 8.5 升级有坑…
|
存储 应用服务中间件 网络安全
cas-overlay-template 5.3.9 + Nginx + Tomcat 8 + Let's encrypt 免费 SSL 升级 https
申请证书 https://yq.aliyun.com/articles/713724?spm=a2c4e.11155435.0.0.5a9f33121vK849 将SSL证书由 .pem 格式转换成 Tomcat 所支持的 .
1977 0
|
JavaScript Java 应用服务中间件
记一次升级Tomcat
记一次升级Tomcat 总述     JDK都要出12了,而我们项目使用的jdk却仍然还停留在JDK1.6。为了追寻技术的发展的脚步,我这边准备将项目升级到JDK1.8。而作为一个web项目,我们的容器使用的是Tomcat。
2687 0
|
应用服务中间件 Java Maven
log4j2的log输出到tomcat/logs目录下及使用(转)
原文链接:http://blog.csdn.net/honghailiang888/article/details/50370252  原文作者:  Herman-Hong 一、环境配置 log4j2、tomcat7、maven工程、springMVC架构   二、log4j2.xml配置   如图中1所示要配置成${sys:catalina.home}、而配置成${catalina.home}是不可以的。
2842 0