Bonjour,
je cherche quelqu'un qui a déjà réussi à créer et à paramétrer des Exceptions converters avec GraniteDS et Tide, je n'y arrive pas.
Merci de vous faire connaitre![]()
Bonjour,
je cherche quelqu'un qui a déjà réussi à créer et à paramétrer des Exceptions converters avec GraniteDS et Tide, je n'y arrive pas.
Merci de vous faire connaitre![]()
Bonjour,
pour cela, tu dois configurer côté serveur et côté client.
1) côté serveur :
- créer une classe implémentant ExceptionConverter
Ex de template :
Cette classe est sensé intercepter les exceptions de type ton.package.PersoException.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 public class PersoExceptionConverter implements ExceptionConverter { public static final String PERSO_EXCEPTION = "Perso.Exception"; @Override public boolean accepts(Throwable t, Throwable finalException) { return t.getClass().equals(ton.package.PersoException.class); } @Override public ServiceException convert(Throwable t, String detail, Map<String, Object> extendedData) { ServiceException se = new ServiceException(PERSO_EXCEPTION, t.getMessage(), detail, t); se.getExtendedData().putAll(extendedData); return se; } }
- enregistrer ton ExceptionConverter dans granite-config.xml :
- soit de façon automatique avec <granite-config scan="true" /> et en laissant un fichier vide granite-config.properties dans le META-INF contenant ton ExceptionConverter
- soit en l'ajoutant manuellement dans granite-config.xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3<exception-converters> <exception-converter type="ton.package.PersoExceptionConverter"/> </exception-converters>
Ne pas faire les 2 sinon granite t'enregistrera 2 fois cet ExceptionConverter
2) côté client :
- créer une classe implémentant IExceptionHandler :
Le emsg.faultCode doit correspondre au code d'erreur lancé du côté serveur soit dans mon cas de figure PERSO_EXCEPTION.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 public class PersoException implements IExceptionHandler { public function PersoException() { } public function accepts(emsg:ErrorMessage):Boolean { return emsg.faultCode == "Perso.Exception"; } public function handle(context:BaseContext, emsg:ErrorMessage):void { trace("ici ton traitement à effectuer..."); } }
- Enfin ajouter dans Tide ton gestionnaire d'ExceptionConverter :
(ici dans le cas d'une liaison Tide avec le serveur via un EJB).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Ejb.getInstance().addExceptionHandler(PersoException);
C'est fini![]()
Bonjour,
un grand merci je n'avais pas créé le fichier granite-config.properties et donc mon ExceptionConverter n'était pas enregistré.
Merci encore![]()
Partager