2010-11-26 36 views
1

Je veux utiliser un intercepteur pour mon bean, qui va vérifier la validité d'un jeton de connexion donné.Quelle est la bonne façon de traiter les exceptions dans les intercepteurs dans EJB3?

Si la connexion est invalide, je veux jeter une exception particulière, si la connexion a expiré, je veux envoyer un autre (TokenExpiredException, quelque chose comme ça). Ces exceptions sont incluses dans l'interface donnée au client.

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

D'après ce que j'ai essayé, lancer une telle exception spécifique dans l'Interceptor conduit à un UndeclaredThrowableException du côté client. Bien que cette exception inclue la référence à la cause, elle n'est pas vraiment idéale et ne peut pas être traitée avec des clauses de capture régulières.

Quelle est la manière correcte de déclarer différents types d'exceptions avec Interceptors?

Répondre

1

Je ne pense pas qu'il existe une façon correcte de le faire. Les méthodes devraient lancer uniquement les exceptions déclarées, et un intercepteur ne devrait pas en ajouter un nouveau.

Mon cas personnel a été résolu en ajoutant un code d'erreur à notre exception par défaut qui est lancée par toutes les méthodes.