Spring的findBean和sessionBind
现在的项目是Jsf+Hibernate+Spring+Birt(报表)构成的.但由于Birt没有纳入Jsf的管理因而当遇到Hibernate的延迟加载时会报session关闭错误.解决方法是(自己的理解,说的不定对):
//findBean是Spring提供的方法,通过Name获得配置文件的Bean.由于Spring在项目初始化时就已经注入好,因而拿来使用即可
public void sessionOutThread(ServletContext context) throws Exception { SessionFactory factory = (SessionFactory) findBean( "FactoryName", context); SessionHolder holderInfo = (SessionHolder) TransactionSynchronizationManager .getResource(factory); if(holderInfo!=null){ Session s = holderInfo.getSession(); s.flush();//不想提交用s.clear() TransactionSynchronizationManager.unbindResource(factory); SessionFactoryUtils.releaseSession(s, factory); } }