1
예외를 로깅하는 데 도움이되는지 확인하기 위해 모든 메소드 호출을 모든 Seam 컴포넌트로 인터셉트하려고합니다. 모든 구성 요소와 등록 된 인터셉터 목록을 가져 와서 목록에 원하는 항목을 추가함으로써이 작업을 수행 할 수 있다고 생각했습니다.Seam - Interceptors
월터
예외를 로깅하는 데 도움이되는지 확인하기 위해 모든 메소드 호출을 모든 Seam 컴포넌트로 인터셉트하려고합니다. 모든 구성 요소와 등록 된 인터셉터 목록을 가져 와서 목록에 원하는 항목을 추가함으로써이 작업을 수행 할 수 있다고 생각했습니다.Seam - Interceptors
월터
더 높은 우선 순위로 기본 ExceptionFilter를 재정의하려고합니다.
@Name("org.jboss.seam.web.exceptionFilter")
@Install(precedence = MOCK, classDependencies="javax.faces.context.FacesContext")
@BypassInterceptors
@Filter(within="org.jboss.seam.web.ajax4jsfFilter")
public class ExceptionFilter extends org.jboss.seam.web.ExceptionFilter
@Override
protected endWebRequestAfterException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Exception e) {
// here you log exceptions
}
}
Seam의 예외 처리기를 사용하는 것이 더 좋습니다. 당신의 응답을
@Name("org.jboss.seam.exception.exceptions")
@Scope(ScopeType.APPLICATION)
@Install(precedence = Install.APPLICATION)
@BypassInterceptors
public class ExceptionHandler extends org.jboss.seam.exception.Exceptions {
public void handle(Exception e) throws Exception {
//Log your exception here if you want
Events.instance().raiseAsynchronousEvent("SomeListener",e.getMessage());
super.handle(e);
}
감사합니다,하지만 난 심지어 모든 구성 요소 백그라운드에서 실행중인 비동기 작업에서있는 사람을 차단하고 싶습니다 : 이 당신이 그것을 할 수있는 방법이다. 메소드, 인수 및 결과에 대한 액세스가 가능합니까? –
Seam에서 AsynchronousExceptionHandler를 사용할 수 있습니다. 내 답변과 마찬가지로 확장하고 재정의하고 직접 사용할 수 있습니다. –