Web应用程序似乎已启动名为[HikariPool-1管家]的线程,但未能停止它

Luc*_*ira 5 tomcat8 hikaricp

我正在尝试在Tomcat 8.5中使用HikariCP JNDI DataSource Factory,但是当它关​​闭时,我得到以下警告:

o.a.c.loader.WebappClassLoaderBase       : The web application [ROOT] appears to have started a thread named [HikariPool-1 housekeeper] 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(Unknown Source)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(Unknown Source)
 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source)
 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source)
 java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
 java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
 java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

我的Hiraki配置是在JNDI DataSource Factory(Tomcat等)文档之后设置的,它是这样的:

<Resource name="******" auth="Container"
      factory="com.zaxxer.hikari.HikariJNDIFactory"
      type="javax.sql.DataSource"
      minimumIdle="5" 
      maximumPoolSize="10"
      connectionTimeout="300000"
      driverClassName="org.postgresql.Driver"
      jdbcUrl="jdbc:postgresql://******"
      dataSource.implicitCachingEnabled="true" 
      dataSource.user="******"
      dataSource.password="******" />
Run Code Online (Sandbox Code Playgroud)

我找到了此链接, 但它无济于事,因为我将Hiraki用作Tomcat中的资源。

我正在使用Tomcat 8.5 HikariCP 2.5.1

有什么帮助吗?谢谢。

Ayu*_*gam 11

我遇到了完全相同的问题,至少错误消息是相同的。错误消息表明 Hikari-Pool 配置有问题,但实际上您的 Tomcat 无法启动。一个简单的解决方案是检查您的应用程序是否存在任何运行时错误。就我而言,在 Rest-Controller 中,我声明了具有相同 URI 端点但具有不同方法名称的相同 HTTP 方法。 因此,这不是编译时错误,而是在 Tomcat 构建过程中失败,导致 HikariPool 抛出错误消息。

希望能帮助到你。如果这不起作用请发表评论,也许我可以提供帮助。


小智 3

您需要在资源末尾添加以下内容:

           closeMethod="close"/>
Run Code Online (Sandbox Code Playgroud)