Systemctl start embeded Tomcat не работает

Systemctl start embeded Tomcat не работает

У меня есть проект Java со встроенным Tomcat 8.5. Я добавил новую службу в sytemd, чтобы запустить ее как службу в CentOS 7.2. Когда я использую "systemctl start app.service" для запуска сервера, программа остановится на

"Aug 16, 2018 5:54:13 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/8.5.32"  

Я использовал команду «jstack» для проверки процесса, после чего получил следующую информацию:

    2018-08-16 18:28:34
    Полный дамп потока Java HotSpot(TM) 64-битной серверной виртуальной машины (смешанный режим 25.152-b16):

    "Присоединить прослушиватель" #14 демон prio=9 os_prio=0 tid=0x00007fe804001000 nid=0x19a5 ожидание по условию [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE

    "localhost-startStop-1" #13 демон prio=5 os_prio=0 tid=0x00007fe7e0001800 nid=0x190c готов к запуску [0x00007fe8204a8000]
       java.lang.Thread.State: RUNNABLE
        в java.io.UnixFileSystem.getBooleanAttributes0 (собственный метод)
        в java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:242)
        в java.io.File.isDirectory(File.java:849)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2011)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2020)
        в org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1963)
        в org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1913)
        в org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1153)
        в org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:765)
        - заблокировано (org.apache.catalina.startup.ContextConfig)
        в org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:299)
        в org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:94)
        в org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5154)
        - заблокирован (org.apache.catalina.core.StandardContext)
        в org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        - заблокирован (org.apache.catalina.core.StandardContext)
        в org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1421)
        в org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1411)
        в java.util.concurrent.FutureTask.run(FutureTask.java:266)
        в java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        в java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        в java.lang.Thread.run(Thread.java:748)

    "Tomcat-startStop-1" #12 демон prio=5 os_prio=0 tid=0x00007fe8486d7000 nid=0x190b ожидание по условию [0x00007fe8205ad000]
       java.lang.Thread.State: ОЖИДАНИЕ (парковка)
        в sun.misc.Unsafe.park (собственный метод)
        - парковка для ожидания (java.util.concurrent.FutureTask)
        в java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        в java.util.concurrent.FutureTask.awaitDone(FutureTask.java:429)
        в java.util.concurrent.FutureTask.get(FutureTask.java:191)
        в org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:941)
        - заблокирован (org.apache.catalina.core.StandardHost)
        в org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:872)
        - заблокирован (org.apache.catalina.core.StandardHost)
        в org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        - заблокирован (org.apache.catalina.core.StandardHost)
        в org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1421)
        в org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1411)
        в java.util.concurrent.FutureTask.run(FutureTask.java:266)
        в java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        в java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        в java.lang.Thread.run(Thread.java:748)

    "NioBlockingSelector.BlockPoller-1" #11 демон prio=5 os_prio=0 tid=0x00007fe8486c3800 nid=0x190a запуск [0x00007fe8206ae000]
       java.lang.Thread.State: RUNNABLE
        в sun.nio.ch.EPollArrayWrapper.epollWait(собственный метод)
        на sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
        на sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
        в sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
        - заблокирован (a sun.nio.ch.Util$3)
        - заблокировано (java.util.Collections$UnmodifiableSet)
        - заблокирован (a sun.nio.ch.EPollSelectorImpl)
        на sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
        в org.apache.tomcat.util.net.NioBlockingSelector$BlockPoller.run(NioBlockingSelector.java:298)

    "Сервисный поток" #9 демон prio=9 os_prio=0 tid=0x00007fe848102800 nid=0x1902 работоспособен [0x00000000000000000]
       java.lang.Thread.State: RUNNABLE

    "C1 CompilerThread2" #8 daemon prio=9 os_prio=0 tid=0x00007fe8480ff800 nid=0x1901 ожидание по условию [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE

    "C2 CompilerThread1" #7 daemon prio=9 os_prio=0 tid=0x00007fe8480fd800 nid=0x1900 ожидание по условию [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE

    "C2 CompilerThread0" #6 демон prio=9 os_prio=0 tid=0x00007fe8480fb000 nid=0x18ff ожидание по условию [0x00000000000000000]
       java.lang.Thread.State: RUNNABLE

    "Диспетчер сигналов" #5 демон prio=9 os_prio=0 tid=0x00007fe8480f9000 nid=0x18fe запуск [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE

    "Поток суррогатной блокировки (конкурентный GC)" #4 демон prio=9 os_prio=0 tid=0x00007fe8480f7800 nid=0x18fd ожидание по условию [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE

    "Финализатор" #3 демон prio=8 os_prio=0 tid=0x00007fe8480c4000 nid=0x18fc в Object.wait() [0x00007fe821dfc000]
       java.lang.Thread.State: ОЖИДАНИЕ (на мониторе объекта)
        в java.lang.Object.wait (собственный метод)
        в java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
        - заблокирован (java.lang.ref.ReferenceQueue$Lock)
        в java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164)
        в java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209)

    "Обработчик ссылок" #2 демон prio=10 os_prio=0 tid=0x00007fe8480bf800 nid=0x18fb в Object.wait() [0x00007fe821efd000]
       java.lang.Thread.State: ОЖИДАНИЕ (на мониторе объекта)
        в java.lang.Object.wait (собственный метод)
        в java.lang.Object.wait(Object.java:502)
        в java.lang.ref.Reference.tryHandlePending(Reference.java:191)
        - заблокирован (java.lang.ref.Reference$Lock)
        в java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153)

    "main" #1 prio=5 os_prio=0 tid=0x00007fe84800b800 nid=0x18f4 ожидание по условию [0x00007fe8509c5000]
       java.lang.Thread.State: ОЖИДАНИЕ (парковка)
        в sun.misc.Unsafe.park (собственный метод)
        - парковка для ожидания (java.util.concurrent.FutureTask)
        в java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        в java.util.concurrent.FutureTask.awaitDone(FutureTask.java:429)
        в java.util.concurrent.FutureTask.get(FutureTask.java:191)
        в org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:941)
        - заблокирован (org.apache.catalina.core.StandardEngine)
        в org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
        - заблокирован (org.apache.catalina.core.StandardEngine)
        в org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        - заблокирован (org.apache.catalina.core.StandardEngine)
        в org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
        - заблокирован (org.apache.catalina.core.StandardEngine)
        в org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        - заблокировано (org.apache.catalina.core.StandardService)
        в org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:793)
        - заблокирован (java.lang.Object)
        в org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        - заблокирован (org.apache.catalina.core.StandardServer)
        в org.apache.catalina.startup.Tomcat.start(Tomcat.java:367)
        в app.test.server.HttpServer.startServer(HttpServer.java:107)
        в app.test.ServerBootstrap.main(ServerBootstrap.java:27)

    "VM Thread" os_prio=0 tid=0x00007fe8480b7800 nid=0x18fa работоспособен

    "Рабочий процесс Gang#0 (параллельные потоки GC)" os_prio=0 tid=0x00007fe84801c800 nid=0x18f5 готов к запуску

    "Рабочий процесс Gang № 1 (параллельные потоки GC)" os_prio=0 tid=0x00007fe84801e000 nid=0x18f6 готов к запуску

    "Рабочий процесс Gang № 2 (параллельные потоки GC)" os_prio=0 tid=0x00007fe848020000 nid=0x18f7 готов к запуску

    "Рабочий процесс Gang № 3 (параллельные потоки GC)" os_prio=0 tid=0x00007fe848022000 nid=0x18f8 готов к запуску

    «Конкурентный поток маркировки-очистки мусора» os_prio=0 tid=0x00007fe848065000 nid=0x18f9 работоспособен

    «Поток периодических задач VM» os_prio=0 tid=0x00007fe848108000 nid=0x1903 ожидание по условию

    Глобальные ссылки JNI: 64

Я нашел, что есть

  • заблокировано <0x00000006cb0240e0> (org.apache.catalina.startup.ContextConfig)

Мой служебный скрипт в "/etc/systemd/system" выглядит так:

    [Единица]
    Описание=testapp
    После=сеть.цель
    [Услуга]
    Тип=разветвление
    ExecStart=/test/app/startup.sh
    [Установить]
    WantedBy=многопользовательский.целевой

Содержимое моего скрипта startup.sh следующее:

      #!/bin/ш
      LIB=/тест/приложение/библиотека
      CONFIG_FILE_PATH=/test/app/config
      CP=.:$CLASSPATH
      для f в ${LIB}/*.*;
        сделать CP=${CP}:$f;
      сделанный
      CP=${CP}:${CONFIG_FILE_PATH};

      экспортировать CLASSPATH=$CP
      nohup /usr/local/jdk1.7.0_80/bin/java -classpath $CLASSPATH app.test.ServerBootstrap ${CONFIG_FILE_PATH} >> test.out 2>&1 &

Когда я запускаю свой скрипт "startup.sh", проблем нет. Когда я использую команду "systemctl", программа останавливается, но процесс продолжает работать.

Как мне справиться с этой проблемой. Есть ли разница между запуском скрипта оболочки и команды "systemctl"?

Связанный контент