2009-04-03 3 views
0

나는 다음과 같은 방법으로 ThreadLocalSessionContext를 사용하려고 :최대 절전 모드 : ThreadLocalSessionContext : 바인딩 호출에 바인딩 이미 세션()

Session hsession = HibernateUtils.getSession(); 
ThreadLocalSessionContext.bind(hsession); 
// do stuff 
hsession.close(); 

나는 모든 단일 Struts 액션에 대해이 작업을 수행합니다. 내가 잘못하고있는 일이있어서 다음과 같은 오류가 발생합니까?

ThreadLocalSessionContext.bind가 포함 된 모든 파일을 검사하고 이러한 세션이 명시 적으로 닫혔는지 확인했습니다. 세션이 세션 팩토리에 바인드 될 때 모니터링하는 방법이 있습니까?

감사합니다.

답변

0

documentation은 "이 클래스가 관리하는 세션에서 close()가 호출되면 자동으로 언 바운드됩니다." 실제로 자동이 아닙니다!

ThreadLocalSessionContext.unbind(sessionFactory)을 명시 적으로 호출하여 세션의 바인드를 해제해야합니다. 그렇지 않으면 세션이 닫히더라도 여전히 SessionFactory에 바인드되어 있습니다.