gpt4 book ai didi

java - 玩!没有正确关闭 H2

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:18:48 25 4
gpt4 key购买 nike

我正在使用 Play 编写一个部署在 Tomcat 中的网络应用程序。因为该应用程序不会处理太多数据,所以我将默认的 H2 数据库与 Hibernate 一起使用。当我想部署应用程序的新版本时,我关闭了 tomcat,删除旧的 web 应用程序和 WAR,添加我的新 WAR,然后重新启动。

直到几天前,当我添加数据库组件时,它才起作用。现在,我经常无法重新部署该应用程序。当我删除旧目录时,它会自动重新生成这个结构:

$ ls -laR myapp/
myapp/:
total 24
drwxr-xr-x 3 root root 4096 Aug 24 17:20 .
drwxr-xr-x 13 root root 4096 Aug 24 17:20 ..
drwxr-xr-x 3 root root 4096 Aug 24 17:20 WEB-INF

myapp/WEB-INF:
total 24
drwxr-xr-x 3 root root 4096 Aug 24 17:20 .
drwxr-xr-x 3 root root 4096 Aug 24 17:20 ..
drwxr-xr-x 3 root root 4096 Aug 24 17:20 application

myapp/WEB-INF/application:
total 24
drwxr-xr-x 3 root root 4096 Aug 24 17:20 .
drwxr-xr-x 3 root root 4096 Aug 24 17:20 ..
drwxr-xr-x 3 root root 4096 Aug 24 17:20 db

myapp/WEB-INF/application/db:
total 24
drwxr-xr-x 3 root root 4096 Aug 24 17:20 .
drwxr-xr-x 3 root root 4096 Aug 24 17:20 ..
drwxr-xr-x 2 root root 4096 Aug 24 17:20 h2

myapp/WEB-INF/application/db/h2:
total 24
drwxr-xr-x 2 root root 4096 Aug 24 17:20 .
drwxr-xr-x 3 root root 4096 Aug 24 17:20 ..
-rw-r--r-- 1 root root 100 Aug 24 17:20 play.lock.db

WAR 解压缩时也会发生同样的情况。

我最近注意到 catalina.out 日志中闪过一条消息,提示我的应用程序没有关闭一个名为“H2 文件锁定看门狗”的进程。基于对 H2 文档的简要搜索,我认为该过程干扰了我的应用程序。

编辑

这是日志文件中的提示行:

严重:Web 应用程序 [/myapp] 似乎启动了一个名为 [H2 File Lock Watchdog/var/lib/apache-tomcat-6.0.32/webapps/myapp/WEB-INF/application/db/h2/play.lock.db] 但未能阻止它。这很可能会造成内存泄漏。

那么,我该如何终止这个进程呢?我无法重启机器,因为它不是我的,而且我用topps 也找不到watchdog。我更喜欢让 Play 自动关闭它的方法,但我不介意将它构建到我的部署脚本中。

如果您已经读到这里,我将万分感谢!

最佳答案

I shut down tomcat

你确定你已经完全关闭tomcat了吗?因为 H2 数据库还在运行。如果关闭tomcat进程,数据库也会停止(因为H2在tomcat进程内运行)。除非您在不同的进程中运行数据库。

或者您只是关闭了 tomcat 中的 Web 应用程序?如果是这样,则至少有一个数据库连接未关闭,因此数据库继续运行(并创建此 .lock.db 文件)。

现在,我不知道 Play Framework ,也不知道如何确保所有数据库连接都关闭。

强制关闭数据库的一种方法是运行 SQL 语句 SHUTDOWN

I can't find the watchdog with top or ps

topps 只显示进程。 H2 看门狗是 Java 进程中的一个线程。要查看线程,请使用:

jps -l (to get the list of Java processes)
jstack -l <pid> (to get a full thread dump)

关于java - 玩!没有正确关闭 H2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7182515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com