'Apache Tomcat server did not shutdowns gracefully

I am trying to shutdown Apache Tomcat gracefully but it is not getting shutdown properly and gets hang may be because of Apache Camel or Hazelcast Jet not sure on context destroy I am shutting down the Hazelcast Jet instance still it not. Below is my context destroy code

public static void contextDestroyed() {
    try {
        if (executor != null) {
            executor.shutdown();
        }
        if (hazelcastjetInstance != null) {
            hazelcastjetInstance.getCluster().shutdown();
            //hazelcastjetInstance.shutdown();
        }
        AbandonedConnectionCleanupThread.checkedShutdown();
        Runtime.getRuntime().gc();
    } catch (Exception e) {
     e.printStackTrace()
    }
}

and error which is I am getting while shutdown in tomcat (sorry my log is little bit long)

08-Feb-2022 01:09:06.642 INFO [main] org.apache.catalina.core.StandardServer.await A valid 
shutdown command was received via the shutdown port. Stopping the Server instance.
08-Feb-2022 01:09:06.653 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["https-jsse-nio-8443"]
08-Feb-2022 01:09:06.664 INFO [main] org.apache.catalina.core.StandardService.stopInternal Stopping service [Catalina]
01:09:06.981 [[32m INFO[0m] [[34mo.a.c.c.StandardWrapper[0m] Waiting for [2] instance(s) to be deallocated for Servlet [CamelServlet]
01:09:07.989 [[32m INFO[0m] [[34mo.a.c.c.StandardWrapper[0m] Waiting for [2] instance(s) to be deallocated for Servlet [CamelServlet]
01:09:08.991 [[32m INFO[0m] [[34mo.a.c.c.StandardWrapper[0m] Waiting for [2] instance(s) to be deallocated for Servlet [CamelServlet]
java.util.logging.ErrorManager: 5
java.lang.NullPointerException
    at com.hazelcast.jet.impl.util.JetConsoleLogHandler$JetLogFormatter.abbreviateLoggerName(JetConsoleLogHandler.java:83)
    at com.hazelcast.jet.impl.util.JetConsoleLogHandler$JetLogFormatter.format(JetConsoleLogHandler.java:68)
    at java.util.logging.StreamHandler.publish(StreamHandler.java:211)
    at com.hazelcast.jet.impl.util.JetConsoleLogHandler.publish(JetConsoleLogHandler.java:45)
    at java.util.logging.Logger.log(Logger.java:738)
    at org.ocpsoft.logging.JDKLogAdapter.log(JDKLogAdapter.java:29)
    at org.ocpsoft.logging.Logger.info(Logger.java:96)
    at org.ocpsoft.rewrite.servlet.RewriteFilter.destroy(RewriteFilter.java:275)
    at org.apache.catalina.core.ApplicationFilterConfig.release(ApplicationFilterConfig.java:314)
    at org.apache.catalina.core.StandardContext.filterStop(StandardContext.java:4579)
    at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5395)
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257)
    at org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1428)
    at org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1417)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
05-Feb-2022 18:40:48.644 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [App] appears to have started a thread named [EMF Reference Cleaner] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.lang.Object.wait(Native Method)
 java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144)
 java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:165)
 org.eclipse.emf.common.util.CommonUtil$1ReferenceClearingQueuePollingThread.run(CommonUtil.java:70)
05-Feb-2022 18:40:48.645 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [App] appears to have started a thread named [App Scheduler] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.poll(ScheduledThreadPoolExecutor.java:1129)
 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.poll(ScheduledThreadPoolExecutor.java:809)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1073)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
 java.lang.Thread.run(Thread.java:748)
05-Feb-2022 18:40:48.647 SEVERE [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [App] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@78c1361d]) and a value of type [com.ibm.icu.util.ULocale] (value [en_US]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
05-Feb-2022 18:40:48.647 SEVERE [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [App] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@78c1361d]) and a value of type [com.ibm.icu.util.ULocale] (value [en_US]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
05-Feb-2022 18:40:48.648 SEVERE [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [App] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@78c1361d]) and a value of type [com.ibm.icu.util.ULocale] (value [en_US]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
05-Feb-2022 18:40:48.648 SEVERE [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [App] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@b0e6a7b]) and a value of type [org.apache.derby.iapi.services.context.ContextManager] (value [org.apache.derby.iapi.services.context.ContextManager@1411d2f3]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
05-Feb-2022 18:40:48.664 INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["https-jsse-nio-8443"]
05-Feb-2022 18:40:48.671 INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["https-jsse-nio-8443"]
Exception in thread "Thread-5" java.lang.NoClassDefFoundError: org/apache/commons/vfs2/impl/PrivilegedFileReplicator$CloseAction
    at org.apache.commons.vfs2.impl.PrivilegedFileReplicator.close(PrivilegedFileReplicator.java:113)
    at org.apache.commons.vfs2.impl.DefaultFileSystemManager.closeComponent(DefaultFileSystemManager.java:500)
    at org.apache.commons.vfs2.impl.DefaultFileSystemManager.close(DefaultFileSystemManager.java:600)
    at org.pentaho.di.core.vfs.KettleVFS$1.run(KettleVFS.java:84)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: Illegal access: this web application instance has been stopped already. Could not load [org.apache.commons.vfs2.impl.PrivilegedFileReplicator$CloseAction]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
    at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1368)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1218)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1180)
    ... 5 more
Caused by: java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load [org.apache.commons.vfs2.impl.PrivilegedFileReplicator$CloseAction]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
    at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1378)
    at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1366)
    ... 7 more


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source