玩!没有正确关闭 H2

2024-04-15

我正在使用 Play 编写一个部署在 Tomcat 中的 Web 应用程序。因为应用程序不会处理太多数据,所以我将默认的 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 File Lock Watchdog”的进程。根据对 H2 文档的简要搜索,我认为该过程是干扰我的应用程序的原因。

EDIT

这是日志文件中的抱怨行:

SEVERE: The web application [/myapp] appears to have started a thread named [H2 File Lock Watchdog /var/lib/apache-tomcat-6.0.32/webapps/myapp/WEB-INF/application/db/h2/play.lock.db] but has failed to stop it. This is very likely to create a memory leak.

那么,我该如何杀死这个进程呢?我无法重新启动机器,因为它不是我的,而且我找不到看门狗top or ps。我更喜欢 Play 自动关闭它的方法,但我不会将其构建到我的部署脚本中。

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


我关闭了tomcat

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

或者您刚刚关闭了网络应用程序within雄猫?如果是这种情况,则至少有一个数据库连接未关闭,以便数据库继续运行(并创建此 .lock.db 文件)。

现在,我不知道播放框架,也无法说出如何确保所有数据库连接都关闭。

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

我用top或ps找不到看门狗

top and ps只显示流程。 H2 看门狗是thread在java进程中。要查看线程,请使用:

jps -l (to get the list of Java processes)
jstack -l <pid> (to get a full thread dump)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

玩!没有正确关闭 H2 的相关文章

随机推荐

  • PostgreSQL 排序时除以零

    我需要在 postgres 中执行这个查询 但我无法摆脱这个错误 ERROR division by zero SQL state 22012 这是查询 select id rates sum rates count from tbl no
  • 悬停时隐藏 div 的子元素

    有没有办法让这项工作发挥作用 我想将鼠标悬停在外部div并隐藏子元素而不使用 javascript 这样的事情可能吗 fullwrap nth child 1 hover display none 要隐藏子元素 您需要这样的结构 paren
  • Mac 上出现“SSL: CERTIFICATE_VERIFY_FAILED”错误

    我本来想解决 SSL CERTIFICATE VERIFY FAILED 问题 因为我使用 mac 和 python 3 很多人说我应该运行 Applications Python 3 6 Install Certificates comm
  • 使用 PHP 格式化 API JSON 响应

    我有一个 api 我想使用 php 解析其中的数据 这就是回应 success true data medicineId 12 medicineName Abacavir medicineId 10 medicineName Alclome
  • python setuptools setup.cfg:在构建目录中包含主包和子包

    我想使用以下命令为我的 python 软件创建一个 pip 包安装程序 cfg https setuptools pypa io en latest userguide declarative config html文件 我的程序目前的结构
  • 如何在Delphi 10.2中使用ToolsAPI获取当前项目的版本号

    在 Delphi 2007 中 我可以使用以下 ToolsAPI 调用轻松获取当前项目的版本信息 procedure Test var ProjectOptions IOTAProjectOptions Project IOTAProjec
  • 我无法在 Netbeans 7.0 上创建 Rails 应用程序。挂在25%处

    我的开发环境 是 Win7旗舰版 红宝石 1 9 2p180 铁轨3 0 9 宝石1 8 5 sqlite3 和 mysql2 gems 已安装 我的IDE是netbeans 7 0 用于 netbeans 7 0 的 ruby 插件已安装
  • 在移动 Safari 中检测 iOS5(首选 JavaScript)

    iOS5 中引入的新固定定位损坏了我的网络应用程序 我需要一种方法来检测 iOS5 用户 如何检测iOS5 浏览器代理字符串是什么 首选 JavaScript 谢谢 从SO问题来看 iOS 5 用户代理字符串是什么 https stacko
  • 将 int 转换为 size_t

    当我传递一个时 我想知道 clang 编译器的以下警告integer to an std initializer list lt size t gt non constant expression cannot be narrowed fr
  • 使用boilerpipe提取非英文文章

    我正在尝试使用锅炉管 http code google com p boilerpipe java 库 用于从一组网站中提取新闻文章 它非常适合英文文本 但对于带有特殊字符的文本 例如带有重音符号的单词 hist ria 无法正确提取这些特
  • Firebase 按顺序获取数据

    我正在使用 Firebase 直到最近才按字母顺序获取数据时没有遇到任何问题 我从来没有使用过查询 我总是只使用数据快照并对其进行一一排序 最近 数据并不总是按字母顺序排列snapVal 如何才能获得按字母顺序排序的数据 snapVal 就
  • commonModalDialogClose(SP.UI.DialogResult.OK, someValue) 抛出错误

    在 SharePoint 2010 中 我有一个可视化 Web 部件 它使用SP UI ModalDialog showModalDialog 该对话框显示正常 但是当我尝试使用关闭对话框时 SP UI ModalDialog common
  • USBInterfaceOpen总是报kIOReturnExclusiveAccess错误

    最近我遇到了这个问题 很头疼 我已经在这个问题上花了一个星期了 但仍然失败 希望您能帮我把这块石头踢开 非常感谢 我的问题 我们公司为iPhone生产USB存储设备 实际上这个存储设备中有一个SDCard 现在 我们想要开发一个 Mac 应
  • li 菜单需要“selected”类

    当用户单击菜单选项卡时 我希望它保持选中状态 并带有白色按钮 这是我的尝试 但它不起作用 如果您单击主页按钮 它不会保持白色 html ul li a href span HOME span a li li a href en us abo
  • 带 redux 的进度条

    我的 React Redux 应用程序中有一个后台上传过程 更新非常频繁 我的减速器看起来像这样 export default function progressReducer state initialState action switc
  • struct - 使用 qsort 对 C 字符串进行排序

    我正在对一堆 IP 进行排序 但由于某种原因 它们的顺序错误 我不太确定问题出在哪里 66 249 71 3 190 148 164 245 207 46 232 182 190 148 164 245 190 148 164 245 20
  • Google 应用已发布到内部测试轨道,但无法找到/下载

    我已成功完成 APK 到内部测试轨道的发布过程 但是 当我尝试使用下面屏幕截图中的 在 GOOGLE PLAY 上查看 链接查看 Google Play 商店上下载的应用程序时 it opens a new window with the
  • 超链接在 Android UC 浏览器中不起作用

    我被一个问题困扰 我正在尝试通过放置在我的网站中的超链接打开 Android 应用程序 下面是链接 href intent Intent action com example myapp category android intent ca
  • 在 Objective-C 中,我可以在 c 浮点数组上声明 @property 吗?

    thing h interface Thing NSObject float stuff 30 property float stuff end thing m implementation Thing synthesize stuff e
  • 玩!没有正确关闭 H2

    我正在使用 Play 编写一个部署在 Tomcat 中的 Web 应用程序 因为应用程序不会处理太多数据 所以我将默认的 H2 数据库与 Hibernate 一起使用 当我想要部署新版本的应用程序时 我关闭 tomcat 擦除旧的 web