2016-09-13 89 views
0

我使用兩個應用程序並行的數據源(指向基於文件的hsqldb),並在其中一個應用程序中編輯條目(無論使用commit還是checkpoint作爲sql命令), 我的其他應用程序沒有意識到這個改變,直到我重新啓動其他應用程序hsqldb - 應用程序之間不同步

我使用

  • 的apache-tomcat的-8.0.26
  • org.hsqldb.hsqldb 2.3.3

apache-tomcat-8.0.26/conf/context.xml文件,我定義了一個名爲的jdbc/xyz資源鍵入javax.sql.DataSource到我的基於文件的hsqldb(url:jdbc:hsqldb:file:/myfolder/mydatabase;shutdown=true;hsqldb.lock_file=false)。

如果我只從部署在tomcat服務器上的一個應用程序使用這個數據源並進行編輯,我沒有任何問題。

你有什麼想法這種奇怪行爲的原因可能是什麼?提前致謝。

+0

目前我懷疑參數'shutdown = true'是問題... –

回答

1

只有一個java進程可以訪問jdbc:hsqldb:file數據庫。你需要啓動一個HSQLDB服務器。服務器可以在運行Tomcat的進程中啓動。然後可以使用jdbc:hsqldb:hsql:protocol連接到此服務器。

+0

你可以從不同的java進程並行訪問一個'jdbc:hsqldb:file'數據庫,但是沒有任何同步。將* updates *,* inserts *,* deletes *,* alters *寫入hsqldb-log文件,如果沒有問題發生,可以在下次重新啓動後使用'hsqldb.full_log_replay = true'完成所有更改,但這是當然不能保證,應該不惜一切代價避免。 –

+0

NO。鎖文件不允許並行訪問。 – fredt

+0

如果您在我的原始文章中使用'hsqldb.lock_file = false',那麼請不要使用。 –

相關問題