atitit.提升稳定性---hibernate 增加重试retry 机制解决数据库连接关闭

atitit.提升稳定性---hibernate 增加重试retry 机制解决数据库连接关闭

 

1. 流程总结

retry(5times).invoke(xxx).test().rest().$() throw OvertimeEX

 

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

 

2. class 

Deprecated

public 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;

    }

我要啦免费统计
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值