实际上,我无法正常运行Tomcat9-WebApp。感谢您为我指明正确方向提供的帮助。
设置:
操作系统:Ubuntu 18.04
应用服务器:Tomcat 9.0.12(也已通过8.5.34测试)
网络应用:SpringBoot 1.5.7
JDK :1.8.0_181
启动脚本命令:$ CATALINA_HOME / bin / startup.sh
setenv.sh :
JRE_HOME=path/to/jdk
CATALINA_PID="$CATALINA_BASE/tomcat.pid"
LOGGING_CONFIG="-Dlog4j.configurationFile=$CATALINA_BASE/conf/log4j2.xml"
LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager"
export CLASSPATH=$CLASSPATH:$CATALINA_HOME/lib/log4j-jul-2.11.1.jar:$CATALINA_HOME/lib/log4j-core-2.11.1.jar:$CATALINA_HOME/lib/log4j-api-2.11.1.jar:$CATALINA_HOME/lib/log4j-slf4j-impl-2.11.1.jar
如果我以root用户身份运行脚本,则脚本可以正常运行,并且tomcat功能齐全。
但是,如果我运行与服务相同的脚本,它将在WAR部署期间挂起。 CPU使用率不断提高到100%
systemctl start tomcat
Trace-Logs让我想到,Tomcat正在扫描文件系统的每个目录中的配置类(例如:/ sys / devices / pci0000:00/0000:00:18.6 / subsystem /)
o.a.c.s.ContextConfig: Scanning directory for class files with annotations [/sys/devices/pci0000:00/0000:00:18.6/subsystem ....
日志文件本身大于200MB。上面的行只是一个示例。
如前所述,任何帮助将不胜感激。
@编辑
进度:我将tomcat日志重置为默认值。一旦完成。一切正常。
最美好的祝愿
迈克
答案 0 :(得分:0)
最后我开始工作了:
问题取决于导出的CLASSPATH-Command:
我不知道为什么,但是必须没有CLASSPATH的扩展名。
解决方案: 替换
export CLASSPATH=$CLASSPATH:$CATALINA_HOME/lib/log4j-jul-2.11.1.jar:$CATALINA_HOME/lib/log4j-core-2.11.1.jar:$CATALINA_HOME/lib/log4j-api-2.11.1.jar:$CATALINA_HOME/lib/log4j-slf4j-impl-2.11.1.jar
使用
export CLASSPATH=$CATALINA_HOME/lib/log4j-jul-2.11.1.jar:$CATALINA_HOME/lib/log4j-core-2.11.1.jar:$CATALINA_HOME/lib/log4j-api-2.11.1.jar:$CATALINA_HOME/lib/log4j-slf4j-impl-2.11.1.jar
并且服务正常启动。
如果有人可以对此行为做出解释。我和我也会打赌其他人也会爱上这个。
@编辑
我对此行为有一个可能的解释。由于在启动期间未定义$ CLASSPATH,因此结果可能为“”。因此,此行的开头似乎是“ : / another / path ...”,它的含义可能类似于“ /: / another / path ...”。结果是,“ /”是类路径的成员。这可能会迫使spring扫描整个文件系统。
重要提示:这只是一个猜测,尚未得到验证。