Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionExce

       第一: 说明 

       Mysql服务器默认的“wait_timeout”是8小时,也就是说一个connection空闲超过8个小时,Mysql将自动断开该 connection。connections如果空闲超过8小时,Mysql将其断开,而DBCP并不知道该connection已经失效,如果这时有 Client请求connection,DBCP将该失效的Connection提供给Client,将会造成上面的异常。

  第二: 方案

    (1),是用定时器,connection空闲8小时 mysql就是自动断开,所以使用定时器,在每七小时之间就查询一下mysql数据库的数据(这个可以随便查询自己的数据,只是为了建一次连接,不让mysql自己的断开)。

    (2), 在JAVA中实现定时器功能要用的二个类是Timer,TimerTask。

    (3), 我这里使用的是TimerTask,ssh框架,除了ssh的一些基本jar包,还需要导入quartz-1.8.5.jar

    (4), TimerTask类:

/**
 * 
 * 定时器
 * 
 * */

public class TimerTas{

private IMemberService memberService;

public IMemberService getMemberService() {
return memberService;
}

public void setMemberService(IMemberService memberService) {
this.memberService = memberService;
}

public TimerTask() {
System.out.println("计划任务被初始化了");
}

public void doTask() {
List<Member> members=memberService.All();
System.out.println("七个小时查询会员表的size:"+members.size());                                
}


}

(5),配置applicationContext.xml 文件     

<!-- 注册定时器 -->
<bean id="timer" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="timerTaskTrigger" />
</list>
</property>
</bean>

<!-- 指定何时触发定时任务 -->
<bean id="timerTaskTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="timerTaskJobDetail" />
</property>
<property name="cronExpression">
<!-- 每7小时钟触发一次(这个时间可以自己设置,我这里是每7小时执行一次) -->
<value>0 0 */7 * * ?</value>
   </property>
</bean>

<!-- 指定定时任务细节 调用哪个类 哪个方法 -->
<bean id="timerTaskJobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="timerTaskInstance" />
</property>
<property name="targetMethod">
<value>doTask</value>
</property>
<property name="concurrent" value="false" />
</bean>

<!-- 实例化定时任务类 -->
<bean id="timerTaskInstance" class="com.lc.util.TimerTask">
<property name="memberService" ref="memberService"></property>
</bean>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值