2010-11-26 79 views
1

我想为我的bean使用拦截器,它将检查给定连接标记的有效性。在EJB3中处理拦截器异常的正确方法是什么?

如果连接无效,我想抛出一个特殊的异常,如果连接过期,我想发送另一个(TokenExpiredException,类似这样的东西)。这些例外包含在提供给客户端的界面中。

@AroundInvoke 
public Object checkParams(InvocationContext ctx) throws TokenExpiredException, Exception{ 
    //code to check token 
    //... 
    throw new TokenExpiredException(); 
} 

从我试过了,在拦截投掷这种特定的异常导致对客户端的UndeclaredThrowableException。虽然这个例外包括了对事业的提及,但它并不是很理想,并且不能用常规的catch语句来处理。

然后用Interceptors声明不同的异常类型的正确方法是什么?

回答

1

我不认为有一个正确的方法来做到这一点。方法应该只抛出它们声明的异常,并且拦截器不应该添加新的异常。

我的个人案例已通过向我们的所有方法抛出的默认异常添加错误代码得到解决。