MyBatis SqlSession 没调用close关闭前锁死db文件,没法往里面insert数据

环境:
tomcat + sqlite + mybatis

项目需求是这样的:需要做一个基于Web的Linux服务器监视系统,把服务器状态存入sqlite的db文件中(服务器用C++写的,服务器也是每隔一段时间用C++ 把数据插入到sqlite中),Web请求每隔一定时间查看数据库内容,并更新内容到网页上,所以自然就想到了用mybatis来与数据库互交。

都知道mybatis与数据库互交大概是遵从这样规范的(取自mybatis官方网站):

SqlSession session = sqlSessionFactory.openSession;
try { // following 3 lines pseudocod for "doing some work" session.insert...; session.update...; session.delete...; session.commit;
} finally { session.close;
}

在try里面我就添加了查询数据的代码块,并返回相关json数据,都是正确的。但是我无意中发现,在session打开之后,没有close之前,C++ server 插入会失败(它两是并发的,两进程是共享一个db文件,一个是Servlet用MyBatis读取db文件,一个是C++写的server写db文件),这样会导致后面的步骤就全错了。有什么办法可以让C++ 在session close之后(意思就是同步等待一会儿)再进行insert操作,因为我从C++端无法判断是否在session过程中。

可以判断session是否为空,如果为空,连接关闭。

发表评论

电子邮件地址不会被公开。 必填项已用*标注