今天做OA的及时消息通讯的---消息缓存方式实现.
因为要求缓存消息,发送到服务器的消息并不会立即持久化到数据库中,我做的是,当缓存的消息达到一定的数目的时候,启动持久化线程,进行持久化,持久化是用Ibatis写的一个方法:如下:
public
void
insertMEG2REV(Hashtable messagequeue, Vector receiverqueue)
throws
MessageErrorException, SQLException
...
{
SqlMapClient sqlmap=(SqlMapClient)ServiceLocator.findMyBean("sqlMapClient");
sqlmap.startBatch();
Enumeration em=messagequeue.elements();
//插入及时消息
while(em.hasMoreElements())...{
Message message=(Message)em.nextElement();
Object Key=sqlmap.insert("MessageDao.insertNewMessage3",message);
}
博客讲述了在实现消息缓存时,由于使用Ibatis批处理而不关闭SqlMapClient,导致服务器出现死锁和资源耗尽的问题。通过分析,发现问题是由于频繁启动线程并进行数据库操作,未正确管理事务和释放数据库连接。添加事务管理并确保SqlMapClient关闭后,解决了死锁和资源耗尽的情况,强调了事务管理和数据库资源释放的重要性。
最低0.47元/天 解锁文章
1193

被折叠的 条评论
为什么被折叠?



