h2是否可以混合连接

比波仔 发布于 2016/01/05 16:42
阅读 541
收藏 0
对数据库进行操作的软件有两套,一套为公司采购的商用软件,该软件启动tomcat后,会以file形式访问h2本地数据库。现由于售后到期,公司业务需要,要对该h2数据库进行定时更新。于是自己开发了一套java小程序以TCP方式连接h2数据库。但发现在运行自己这套程序同时,必须先关闭商用软件的tomcat服务。否则会发生数据库被锁,不允许访问的情况。具体提示信息为Database may be already in use: "Locked by another process". Possible solutions: close all other connection(s); use the server mode; SQL statement:

null/1520feccb5c098f389d076af1ac1e06b7db6f93268d [90020-140] 90020/90020 (Help)

研究发现如果采用file方式访问h2数据库,不能进行多连接访问,在运行tomcat时,该数据库就会被锁。但由于商用软件没有源代码,所以无法修改数据库连接方式。只是在商用软件的tomcat的conf\Catalina\localhost路径下找到数据库路径的相关xml配置:

<Context docBase="D:/sqsm_app/WebApp_offline" path="xpos" reloadable="True"/>

从这里可以看出是已文件地址进行访问的,所以会自动带锁

但改为<Context docBase="tcp://localhost/D:/sqsm_app/WebApp_offline" path="xpos" reloadable="True"/>

商用软件会运行不起来,所以这种方式修改肯定不对。

我开发的小工具为避免数据库被锁的问题,采用的是h2:tcp连接方式,测试后可以在商用软件未启动的情况下实现多连接对数据库进行操作。但在实际的业务中又不能将商业软件的tomcat服务关闭。

由于公司保密协议,我不能将我的代码发布上来,且本人可以确认自己开发的小工具不存在代码上的问题。目前就想在h2数据库能否进行混合模式访问,在file方式访问方式下,同时支持tcp访问方式。或者还有什么更好的解决办法。

非常感谢!

加载中
0
huan
huan
应该是不行的,建议你都修改为tcp模式  你找到的配置明显不是数据库连接配置。建议你找一个熟悉web开发的人帮忙看看。
0
zigzagroad
zigzagroad
Context标签的docBase属性配置的是工程所在路径,和数据库连接没有关系。你应该在工程下找找相关的数据库连接配置。
返回顶部
顶部