2010-04-14 4 views
3

저지 리소스와 함께 요청 당 트랜잭션을 구현하고 싶습니다. 즉, 나는 그냥 한 곳은 거래 같은 것을 관리 할 의미 : 서블릿 필터와요청 별 거래 및 저지

과거
try { 
    chain.doFilter(request, response); 
    commitSession(); 
} finally { 
    rollbackSession(); // no-op if already committed 
    closeSession(); 
}  

, 내가했던 비슷한 일을하지만 뉴저지에서 작동하지 않습니다. Jersey에서는 예외가 차단되어 웹 컨테이너가되기 전 500 초로 변환됩니다. 필터가 제어를 다시 얻습니다. 필터 접근 방식을 고수하고 응답 코드를 확인할 수는 있지만 매우 매력적이지는 않습니다. 나는 이것에 대해 coupleconversations을 보았지만, ResourceFilter, CloseableService 또는 ServletContainer 등을 사용하여 견고한 접근법을 제시 할 수 없었다. 지금까지 내 끔찍한 해결책은 사용자 정의 ExceptionMapper를 구현하고 롤백을 수행하는 것이었다. 그곳에. 아무도 이것을 깔끔하게 해결하지 못했습니까?

면책 조항 -이 프로젝트는 현재 스프링을 사용하지 않으므로이 작은 사용 사례에서는 피하고 싶습니다.

답변

1

아니 저지 사랑, 응?

http://markmail.org/thread/orcctyu7hczx3d5w

+0

메일 대화를 통해 읽었습니다. 2010 년부터 Jersey 2를 커버하지는 않지만 트랜잭션을 처리하는 데 여전히 동일한 논리를 사용한다면 여기에 질문해야한다고 생각했습니다. 또한 예외가 throw되면 ContainerResponseFilter에서 어떤 일이 발생하는지 궁금합니다 (예 : transaction.commit()이 실패한 경우)? – joscarsson

+0

죄송합니다 ... 저는 2010 년부터 저지 또는이 프로젝트에서 일하지 않았습니다. ( –