atitit.提升稳定性---hibernate 增加重试retry 机制解决数据库连接关闭
2014-09-01 21:55
489 查看
atitit.提升稳定性---hibernate 增加重试retry 机制解决数据库连接关闭
retry(5times):: throw OvertimeEX
调用器() /// 调用原来的api
测试器() :::://////返回T/f
Reset() //// 重设器
End::
测试器()
命令Case1 ok, 返回T
Case2 fail, 返回F,>>重试
Case3 ex,返回F>>>重试
作者:: 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
public abstract class retry
这个马reset 方法
// attilax 老哇的爪子 i4148 o78
//for log rzt detail msg... normal use not neccesry...
retryRzt rzt = new retryRzt();
return new retryO7<Session>(5, rzt) {
@Override
public Boolean item(Object t) throws Exception {
// attilax 老哇的爪子 下午11:49:37 2014年6月9日
final Session sess = getSessionOri();
this.setResetObj(sess);
List li = sess.createQuery("select 1").list();
// core.ex4test();
if (li.size() > 0) {
this.setResult(sess);
return true;
}
return false;
}
// return null;
@Override
public void reset(final Object sessObj) {
core.log("---o79: conn is close ,now startclose session..");
Session sess = (Session) sessObj;
sess.close();
}
}.$O69();
}
Session session = (Session) threadLocal.get();
if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
rebuildSessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession()
: null;
threadLocal.set(session);
}
return session;
}
1. 流程总结
retry(5times).invoke(xxx).test().rest().$() throw OvertimeEXretry(5times):: throw OvertimeEX
调用器() /// 调用原来的api
测试器() :::://////返回T/f
Reset() //// 重设器
End::
测试器()
命令Case1 ok, 返回T
Case2 fail, 返回F,>>重试
Case3 ex,返回F>>>重试
作者:: 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
2. class
Deprecatedpublic abstract class retry
这个马reset 方法
3. retryO7 带reset方法
public static Session getSession() {// attilax 老哇的爪子 i4148 o78
//for log rzt detail msg... normal use not neccesry...
retryRzt rzt = new retryRzt();
return new retryO7<Session>(5, rzt) {
@Override
public Boolean item(Object t) throws Exception {
// attilax 老哇的爪子 下午11:49:37 2014年6月9日
final Session sess = getSessionOri();
this.setResetObj(sess);
List li = sess.createQuery("select 1").list();
// core.ex4test();
if (li.size() > 0) {
this.setResult(sess);
return true;
}
return false;
}
// return null;
@Override
public void reset(final Object sessObj) {
core.log("---o79: conn is close ,now startclose session..");
Session sess = (Session) sessObj;
sess.close();
}
}.$O69();
}
4. getSessionOri
public static Session getSessionOri() throws HibernateException {Session session = (Session) threadLocal.get();
if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
rebuildSessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession()
: null;
threadLocal.set(session);
}
return session;
}
相关文章推荐
- atitit.提升稳定性---hibernate 增加重试retry 机制解决数据库连接关闭
- atitit.提升稳定性---hibernate 添加重试retry 机制解决数据库连接关闭
- 解决Mysql连接池被关闭 ,hibernate尝试连接不能连接的问题。 (默认mysql连接池可以访问的时间为8小时,如果超过8小时没有连接,mysql会自动关闭连接池。
- C#提升性能"数据库连接打开与关闭"经验分享(附:优化过的DBHelper类) 之配餐系统的开发
- hibernate+spring 连接无法自动关闭解决方法
- 使用 EF Core 的 EnableRetryOnFailure 解决短暂的数据库连接失败问题
- C# DataGridView连接数据库,通过textBox更新数据库(解决绑定数据库后无法增加新行)
- Spring如何关闭Hibernate的数据库连接
- 解决TranctionScope调试时关闭数据库连接问题
- [转]Hibernate不能自动建表解决办法及Hibernate不同数据库的连接及SQL方言
- SpringMVC+Hibernate将连接oracle的数据库换成MySQL,报错如何解决
- ORA-00257归档日志写满的解决方法 背景: 在前一篇博客中我们提到了如何启动或关闭oracle的归档(ARCHIVELOG)模式,在我成功设定数据库为归档模式以后, 第二天再次尝试连接数据库,
- Could not open Hibernate Session for transaction, 数据库连接超时解决方法
- Could not open Hibernate Session for transaction, 数据库连接超时解决方法
- 数据库连接长时间空闲后,爆连接已经关闭的解决方法
- hibernate+spring 连接无法自动关闭解决方法
- C#提升性能"数据库连接打开与关闭"经验分享(附:优化过的DBHelper类) 之配餐系统的开发
- C#提升性能"数据库连接打开与关闭"经验分享(附:优化过的DBHelper类) 之配餐系统的开发
- 数据库——“该连接已关闭”问题解决方案
- Could not open Hibernate Session for transaction, 数据库连接超时解决方法