TomEE Embedded作为systemctl服务停止

时间:2019-12-03 09:52:20

标签: java maven tomcat tomee systemctl

我在我们的一个项目中有一些令人困惑的行为。我们建立一个由git进行的Maven项目。在我们的项目中,我们使用tomee-embedded(v。8.0.0)在不同的环境中通过一些命令来启动和运行我们的应用程序。到目前为止,效果很好。

我们最初很想将其部署在服务器上,所以我们分别进行了git clone ...mvn clean install tomee-embedded:run的工作。

为了获得一些测试经验,我们希望保持应用程序作为服务运行,因此我们创建了一个包含以下内容的系统服务:

[Unit]
Description=[… our description …]
After=network-online.target

[Service]
ExecStart = /bin/bash -c '/usr/share/maven/bin/mvn clean install tomee-embedded:run -f [path/to/our/application]
Restart=on-failure

User=root ## necessary to run on port 80.
WorkingDirectory=[onceagain/path/to/our/application]

[Install]
WantedBy=multi-user.target

到目前为止,效果还不错,当我们启动我们的服务时,它会运行maven内容,构建我们的应用程序并启动我们的tomcat,但随后它会立即停止并显示日志:

[INFO] TomEE embedded started on localhost:8080
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 27.717 s
[INFO] Finished at: 2019-12-03T10:28:16+01:00
[INFO] Final Memory: 56M/204M
[INFO] ------------------------------------------------------------------------
[INFO] Stopping ProtocolHandler ["http-nio-8080"]
[INFO] Pausing ProtocolHandler ["http-nio-8080"]
[INFO] Pausing ProtocolHandler ["https-jsse-nio-8443"]
[INFO] Stopping service [Tomcat]Dez 03 10:28:17 h2790697.stratoserver.net rhorun.sh[31795]: org.apache.catalina.LifecycleException: Failed to stop component [StandardEngine[Tomcat]]
at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440)
at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:267)
at org.apache.catalina.core.StandardService.stopInternal(StandardService.java:473)
at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257)
at org.apache.catalina.core.StandardServer.stopInternal(StandardServer.java:994)
at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257)
at org.apache.catalina.startup.Tomcat.stop(Tomcat.java:466)
at org.apache.tomee.embedded.Container.stop(Container.java:846)
at org.apache.openejb.maven.plugins.TomEEEmbeddedMojo$2.run(TomEEEmbeddedMojo.java:425)
Dez 03 10:28:17 h2790697.stratoserver.net rhorun.sh[31795]: Caused by: java.lang.NoClassDefFoundError: org/apache/catalina/core/ContainerBase$StopChild
at org.apache.catalina.core.ContainerBase.stopInternal(ContainerBase.java:976)
at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257)
... 7 more
Dez 03 10:28:17 h2790697.stratoserver.net rhorun.sh[31795]: Caused by: java.lang.ClassNotFoundException: org.apache.catalina.core.ContainerBase$StopChild
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
... 9 more

因此,看起来好像maven正确构建并且我们的tomcat正常启动,但是在我们的tomcat启动完成之后,该过程立即完成,并且tomcat再次停止。如果运行sudo mvn clean install tomee-embedded:run,我们将没有这种行为。

有没有人可以帮助我们?

提前坦克很多!

1 个答案:

答案 0 :(得分:0)

因此,由于项目压力,我们建立了一个快速且肮脏的解决方案,该解决方案目前可以使用: 我们将maven命令移至screen并使其在后台运行。执行脚本ist将@reboot当作cronjob来处理,因为它在需要重新引导计算机时也具有正在运行的服务器。