当前位置: 首页 > 知识库问答 >
问题:

该web应用程序似乎启动了一个名为[HikariPool-1 housekeeper]的线程,但未能阻止它

慕容玉书
2023-03-14

我试图在Tomcat 8.5中使用HikariCP JNDI数据源工厂,但当它关闭时,我收到以下警告:

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)

我的Hiraki配置是根据JNDI数据源工厂(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="******" />

我找到了这个链接,但它没有帮助,因为我在Tomcat中使用Hiraki作为资源。

我使用的是Tomcat 8.5 HikariCP 2.5.1

有什么帮助吗?谢谢

共有3个答案

杜良骏
2023-03-14

在我的例子中,我在字符串类型上有@Enumerated注释。

@Enumerated(EnumType.STRING)
@Column(nullable = false, name = "transaction_type")
private String transactionType;

当我使用纯字符串时,我删除了@枚举行,它成功了。

夹谷辰沛
2023-03-14

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

           closeMethod="close"/>
蒯安平
2023-03-14

我遇到了完全相同的问题,至少错误信息是相同的。错误消息表示Hikari池配置有问题,但实际上您的Tomcat无法启动。一个简单的解决方案是检查应用程序是否存在任何运行时错误。在我的例子中,在我的Rest控制器中,我用相同的URIendpoint声明了相同的HTTP方法,但方法名不同。因此,这不是编译时错误,但在构建Tomcat时失败,导致HikariPool抛出错误消息。

希望有帮助。如果这不起作用,请发表评论,也许我可以帮上忙。

 类似资料:
  • 我在Windows下使用PostgreSQL9.5安装SN5.5。不幸的是,我打错误"Webapp没有启动"。 下面是完整的堆栈跟踪。我想我首先在“Exception sending context initialized event to listener instance of class org.sonar.server.platform.PlatformServletContextList

  • 问题内容: 我的应用程序正在发生什么是有道理的,但我不知道如何解决。这是我的应用程序的简要说明:计时器窗​​口应显示在屏幕的右下角,并显示实时时间。一个小时后,它应该执行一些操作(我还没有决定要执行的操作)。我面临的问题是,在 Timer.java中, 当我刷新实时计时器的秒数时,我正在使用线程睡眠,这阻止了我的所有应用程序继续执行,因此没有窗口显示。 这是带有一些注释的代码: TimerFram

  • Apache Tomcat说过很多次: web应用程序[/MyServlet]似乎已启动名为[pool-61-thread-2]的线程,但未能停止该线程。这很可能会造成内存泄漏。 这样危险吗?servlet应该能够每天处理10.000个请求。如何关闭线程时,他们已经完成?

  • 问题内容: 我正在比较测试程序上的两个变体。两者都在具有四个内核的计算机上以4线程运行。 在“模式1”下,我非常类似于执行程序服务来使用池。我把一堆任务扔了进去。与普通的固定线程执行器服务相比,我获得了更好的性能(即使有对Lucene的调用,该调用在其中执行了一些I / O)。 这里没有分而治之。从字面上看,我知道 在“模式2”中,我向池提交一个任务,然后在该任务中调用ForkJoinTask.i

  • 我正试图在我的tomcat manager上启动我的网络应用程序,但它没有启动。我正在读取webapp的日志文件,出现以下错误: 8-giu-2017 9.41.12org.apache.catalina.core.标准上下文启动GRAVE:错误listenerStart 8-giu-2017 9.41.12org.apache.catalina.core.标准上下文启动GRAVE: Contex

  • 问题内容: 我正在尝试在我正在处理的Python项目中使用线程,但是线程似乎没有按照我的代码的预期运行。似乎所有线程都按顺序运行(即,线程2在线程1结束后开始,它们不是同时启动)。我编写了一个简单的脚本来对此进行测试,并且该脚本也按顺序运行线程。 这是我从运行它得到的输出: 循环的迭代次数更多时,观察到相同的行为。 我尝试搜索网络和较早的SO答案,但找不到任何有帮助的方法。有人可以指出这段代码有什