Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java CDI-处理错误_Java_Jakarta Ee_Seam_Cdi_Jboss Weld - Fatal编程技术网

Java CDI-处理错误

Java CDI-处理错误,java,jakarta-ee,seam,cdi,jboss-weld,Java,Jakarta Ee,Seam,Cdi,Jboss Weld,我正在将支持Seam 2的应用程序迁移到CDI,其中一件对我来说至关重要的事情是错误处理。在Seam 2中,我只是用自己的异常处理程序替换了默认的异常处理程序,但在CDI中,我猜我必须使用拦截器 我将如何设置它,因为使用拦截器需要我指定它将在何处拦截调用?我主要是想完成审计,所以当异常发生时,会将其记录下来,然后向管理员发送通知电子邮件、xmpp、sms和电话 当异常发生时,是否有一个我可以监听并执行的事件 Walter您正在使用JSF2吗?如果是,您可以在web.xml中注册Exception

我正在将支持Seam 2的应用程序迁移到CDI,其中一件对我来说至关重要的事情是错误处理。在Seam 2中,我只是用自己的异常处理程序替换了默认的异常处理程序,但在CDI中,我猜我必须使用拦截器

我将如何设置它,因为使用拦截器需要我指定它将在何处拦截调用?我主要是想完成审计,所以当异常发生时,会将其记录下来,然后向管理员发送通知电子邮件、xmpp、sms和电话

当异常发生时,是否有一个我可以监听并执行的事件


Walter

您正在使用JSF2吗?如果是,您可以在web.xml中注册ExceptionHandlerFactory,而不是编写拦截器。在CustomExceptionHandler中,您可以捕获所有异常并以编程方式处理它们。
我在我的JEE6 CDI应用程序中使用了这种方法,发现它很好

那看起来是个不错的候选人。我还希望在中心位置捕获异步作业的异常。也许我会有一个用于每个,一个用于JSF,一个用于异步作业。多个ExceptionHandlerFactorys?我没试过。也许你可以让我知道它是否有效。还有一个提示:如果您在ExceptionHandlerFactory中打开异常,将其包装在FacesException中,有时还将EvaluationException转换为其原始类型,并从工厂内部将其抛出,您可以在web.xml中声明性地处理异常,但随后必须执行一些技巧,将有关异常的信息传输到jsf页面。