我正在使用Play來編寫一個部署在Tomcat中的webapp。因爲應用程序不會處理非常多的數據,所以我在Hibernate中使用默認的H2數據庫。當我想部署新版本的應用程序時,我關閉了tomcat,清除舊的Web應用程序和WAR,添加新的WAR,然後開始備份。玩!不正確關閉H2
這工作到幾天前,當我添加數據庫組件。現在,我經常無法重新部署應用程序。當我刪除舊目錄時,它會自動重新生成以下結構:
$ 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文檔的簡短搜索,我認爲這個過程是干擾我的應用的。
編輯
下面是在日誌文件中抱怨行:
所以,我怎麼殺這個過程?我無法重新啓動機器,因爲它不是我的,我無法找到帶有top
或ps
的看門狗。我更喜歡Play的方式來自動關閉它,但我並沒有將它構建到我的部署腳本中。
如果您已經閱讀了這篇文章,非常感謝!
另一點值得一提的是數據庫進程顯然最終死亡。我不知道需要多長時間,但它是在幾個小時的規模。等待它只是一種解決方案,但總比沒有好? – andronikus