在ssh中整合quartz 定时任务过程中 使用hibernate操作数据库时会出现 no session 的情况.
产生原因 我们使用spring为解决hibernate在web请求中开启关闭问题使用了OpenSessionInViewFilter做延迟加载, 看OpenSessionInViewFilter的源码 可知, 这个东东需要httprequest 和 httpResponse ; so 产生这个的原因就是在定时任务运行中,没有webcontext参与.所以我们需要在执行的时候装载这个环境.
解决办法:
在job execute 方法添加
即
SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
解决此问题.
详情查看 关于SpringBeanAutowiringSupport的官方文档