심각:servlet.service()for servlet[spring]in context with path[/XX]threw exception[Request

1.설명:최근 springmvc+spring+hibenate 4.0 을 사용 하여 통합 개발 할 때 나 타 났 습 니 다. : Servlet.service() for servlet [spring] in context with path [/XX] threw exception [Request processing failed; nested exception is org.hibernate.HibernateException: No Session found for current thread] with root cause org.hibernate.HibernateException: No Session found for current thread
질문
3.토론:1.인터넷 에서 많은 사람들 이 OpenSession InViewFilter 를 설정 하지 않 았 기 때 문 이 라 고 말 합 니 다.다음 과 같 습 니 다.
 
		OpenSessionInViewFilter
		org.springframework.orm.hibernate4.support.OpenSessionInViewFilter
		
			sessionFactoryBean
			sessionFactory
		
	
	
		OpenSessionInViewFilter
		/
	

그러나 이 방법 은 줄 이 다 릅 니 다.이 필 터 를 설정 하 는 것 은 hibenate 의 지연 로드 문 제 를 진행 하기 위해 서 입 니 다.
         2.일부 사람들 은 Dao 층 의 getCurrentSession()방법 을 openSession()방법 으로 바 꿀 수 있다 고 말한다.
         3.어떤 사람 은 session Factory 에 추가 할 수 있다 고 합 니 다. thread,하지만 또 다른 이상 XX 가 생 겼 습 니 다. is not valid without active transaction(이것 은 본인 이 해결 하지 못 했 습 니 다.모두 가 함께 토론 하 는 것 을 환영 합 니 다)
         4.또 하나의 해결 방법 은 SpringMVC 설정 파일 에 이 문 구 를 추가 하 는 것 입 니 다. 。
4.정리:나 는 모든 방법 을 한 번 씩 시도 하여 최종 적 으로 두 가지 해결 방법 을 정리 했다.
   방법 1:Dao 층 의 getCurrentSession()방법 을 openSession()방법 으로 바 꿉 니 다.이 방법 은 실행 할 수 있 습 니 다.이 유 는 다음 과 같 습 니 다.
            1.getCurrentSession()을 사용 하여 만 든 session 은 현재 스 레 드 에 연결 되 고 openSession()을 사용 합 니 다.
만 든 session 은
            2.getCurrentSession()을 사용 하여 만 든 session 은 commt 나 rollback 에서 자동 으로 닫 힙 니 다(그래서 session 을 찾 을 수 없 는 이상 이 발생 했 습 니 다).openSession()을 사용 합 니 다.
만 든 session 필수
수 동 으로 닫 기.
  방법 2:SpringMVC 설정 파일 에 이 문 구 를 추가 합 니 다.이 유 는 다음 과 같 습 니 다. 설정 파일 에 CGLib 동적 프 록 시 기술 을 사용 하여 인 터 페 이 스 를 만 들 지 않 으 면 GCLIB,spring 을 사용 해 야 함 을 표시 합 니 다. 동적 에이전트 와 CGLIB 사이 에서 자동 으로 전 환 됩 니 다.
이것 도 본인 의 한 가지 정리 입 니 다.만약 에 잘못 이 부족 한 부분 이 있 으 면 여러분 들 이 적극적으로 지적 하고 토론 에 참여 해 주 십시오.감사합니다!

좋은 웹페이지 즐겨찾기