将Tomcat 9与SpringBoot-App一起作为Ubuntu 18.04的服务运行

时间:2018-09-28 13:56:41

标签: java spring-boot ubuntu tomcat service

实际上,我无法正常运行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日志重置为默认值。一旦完成。一切正常。


最美好的祝愿

迈克

1 个答案:

答案 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扫描整个文件系统。

重要提示:这只是一个猜测,尚未得到验证。