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

        }

    我要啦免费统计
  • 相关阅读:
    Java线程优先级(Priority)
    Java同步锁(synchronized)、锁(lock)以及死锁
    Java实现多线程的三种方式(3) ------实现Callable<V>接口
    Java实现多线程的三种方式(2) ------实现Runnable接口
    Java实现多线程的三种方式(1) ------继承Thread类
    Spring AOP(2) --基于配置文件方式配置
    Spring AOP(1) --基于注解方式配置
    Spring IOC容器基于注解方式装配Bean
    Spring IOC容器基于配置文件装配Bean(9) ------bean的SpEL用法
    Python基础教程学习目录
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5058156.html
Copyright © 2020-2023  润新知