2016-09-13 73 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',那么请不要使用。 –

相关问题