环境:
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是否為空,如果為空,連接關閉。