Spring AsyncUncaughtExceptionHandler:在JSF页面上显示错误

时间:2015-11-26 16:24:54

标签: spring jsf asynchronous

我的电子邮件发送代码(Spring托管bean)是异步执行的(使用Springs @Async Annotation),因为我们的电子邮件服务器看起来相当慢(发送邮件需要3-4秒)。如果无法发送电子邮件,则电子邮件方法会抛出已检查的删除邮件。

现在我正在从我的JSF管理的bean(即我的控制器)发送电子邮件,例如向新创建的用户发送凭据并希望显示咆哮消息以通知(管理员)用户电子邮件发送代码引发了一个激活(我知道会有延迟,但这似乎没问题,因为它不会阻止gui thread)。

到目前为止我做了什么:

我实现了我的自定义AsyncUncaughtExceptionHandler,即方法:

public class CustomAsyncExceptionHandler  implements AsyncUncaughtExceptionHandler {

@Override
public void handleUncaughtException(Throwable throwable, Method method, Object... obj) {
// inform user that something went wrong (growl message)
}

}

然后在Spring的XML配置中指定此处理程序:

    <bean id="exceptionHandler" class="org.myproject.util.CustomAsyncExceptionHandler" />
    <task:annotation-driven executor="asyncExecutor" scheduler="asyncScheduler" exception-handler="exceptionHandler" />
    <task:executor id="asyncExecutor" pool-size="5" />
    <task:scheduler id="asyncScheduler" pool-size="10" /

问题是我无法访问此exceptionHandler(这是一个弹簧管理的bean)中的FacesContext。

如何执行此操作,如果没有,是否有另一种方法可以让用户知道异步方法引发了激活?

0 个答案:

没有答案