在ssh中整合quartz 定时任务过程中 使用hibernate操作数据库时会出现 no session 的情况.


产生原因 我们使用spring为解决hibernate在web请求中开启关闭问题使用了OpenSessionInViewFilter做延迟加载, 看OpenSessionInViewFilter的源码 可知, 这个东东需要httprequest 和 httpResponse ; so 产生这个的原因就是在定时任务运行中,没有webcontext参与.所以我们需要在执行的时候装载这个环境.

解决办法:

在job execute 方法添加


SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);


解决此问题.


详情查看 关于​​SpringBeanAutowiringSupport​​的官方文档