需求:
起一个定时任务,定时检索数据库中记录最后更新时间戳,超时报警,Job中关于service代码如下:
WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
UserService service=wac.getBean(UserService .class);
List<User> list=service.getAllUser();
转到dao层去执行时,报错no session found for current Thread。
但是从网页的url进到action里面调用 不会报错。
原因是因为从定时任务调用时会启动一个新的线程,而Hibernate和Spring集成Session是绑定到thread上面的。
解决方式有两种:
1、在定时任务里面获取S

在SpringMVC+Spring3+Hibernate+Quartz的定时任务中,当尝试通过Service查询数据库时,遇到'no session found for current Thread'错误。原因在于定时任务启动新线程导致Hibernate的Session未绑定。解决方法包括:1) 通过ApplicationContext获取Session;2) 直接获取SessionFactory并手动打开、关闭Session。


被折叠的 条评论
为什么被折叠?



