我想拦截对所有接缝组件的所有方法调用,看看这是否有助于记录异常。我在想我可以通过获取所有组件和注册拦截器的列表并简单地将我想要的那个添加到该列表来做到这一点。
沃尔特
我想拦截对所有接缝组件的所有方法调用,看看这是否有助于记录异常。我在想我可以通过获取所有组件和注册拦截器的列表并简单地将我想要的那个添加到该列表来做到这一点。
沃尔特
最好使用 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);
}
尝试以更高的优先级覆盖默认的 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
}
}