我正在将我的 Seam 2 支持的应用程序迁移到 CDI,而对我来说至关重要的一件事就是错误处理。在 Seam 2 中,我只是用我自己的替换了默认的异常处理程序,但在 CDI 中,我猜我将不得不使用一个拦截器。
我将如何设置它,因为使用拦截器需要我指定它将在哪里拦截呼叫?我主要想完成审计,所以当发生异常时,它会被记录下来,然后向管理员发送通知(电子邮件、xmpp、短信、电话)。
当异常发生时,是否有一个我可以监听并采取行动的事件?
沃尔特
我正在将我的 Seam 2 支持的应用程序迁移到 CDI,而对我来说至关重要的一件事就是错误处理。在 Seam 2 中,我只是用我自己的替换了默认的异常处理程序,但在 CDI 中,我猜我将不得不使用一个拦截器。
我将如何设置它,因为使用拦截器需要我指定它将在哪里拦截呼叫?我主要想完成审计,所以当发生异常时,它会被记录下来,然后向管理员发送通知(电子邮件、xmpp、短信、电话)。
当异常发生时,是否有一个我可以监听并采取行动的事件?
沃尔特
你在使用 JSF2 吗?如果是,您可以在 web.xml中注册一个 ExceptionHandlerFactory 而不是编写拦截器,如此处所述。在 CustomExceptionHandler 中,您可以捕获所有异常并以编程方式处理它们。我在我的 JEE6-CDI-app 中使用了这种方法,发现它很好。