Re: Comment gérer les exceptions dans un mdb

Baptiste MATHUS <[email protected]>
Newsgroups gmane.comp.java.french.general
Message-ID <[email protected]>
Pas de bonne pratique particulière. Je n'aime pas beaucoup le flush(), mais
c'est la seule solution fiable que nous ayons.
Même si je suis conscient qu'il n'y en a pourtant pas 30000, j'avoue que je
suis mal à l'aise avec cette solution.

D'un côté, pour des raisons de perfs, il est conseillé d'éviter les flush()
(manuels, j'entends), et en même temps, pour déclencher le problème qui
arrive dans le try/catch métier c'est la seule façon de faire (à moins de
passer à l'extrême inverse qui consiste à configurer le flush() systématique
à chaque opération, qui me semble encore plus irrecevable).

Au final, la préconisation qu'on donne est la suivante :
* on conseille à nos équipes de dev d'éviter le flush() autant que possible
(on a même une règle PMD qui l'interdit)
* lorsqu'il est nécessaire au niveau métier de le faire, alors on met un
flush() avec le // NOPMD + sa justification. Comme ça, on garde la
trace/maîtrise des endroits où c'est fait au cas où on trouverait un jour
une façon plus élégante de gérer ce problème (sans y avoir beaucoup
réfléchi, je doute toutefois qu'il y ait une solution autre puisqu'il faut
bien s'adresser à la base pour être sûr d'avoir "passé" tous les checks
d'intégrité éventuels).

@++

Le 15 novembre 2010 16:45, Sebastien Cesbron <[email protected]> a écrit :

> Salut
>
> Un petit sondage pour les personnes qui auraient déjà rencontré ce cas de
> figure. Je parle d'un mdb mais ça peut correspondre à n'importe quelle
> méthode transactionnelle :
>
> Comment gérer le plus proprement possible dans une méthode transactionnelle
> (le onMessage de mon mdb dans mon cas) les erreurs qui proviennent de la
> base et qui ont un caractère fonctionnel (violation d'une contrainte
> d'unicité par exemple) ?
>
> A quel niveau gère t'on ces exceptions : dans la méhode appelée ? dans la
> méthode appelante ? Dans mon cas je n'ai pas accès à l'appelant car c'est le
> container donc je me dis que je ne peux le faire que dans la méthode
> appelée. Du coup je ne vois que l'utilisation d'une méthode de "flush" dans
> mon api de base de données pour faire les mises à jour avant la sortie de la
> méthode : est-ce une bonne pratique ? y en a t'il d'autres ?
>
> A+
> Seb
>



-- 
Baptiste <Batmat> MATHUS - http://batmat.net
Sauvez un arbre,
Mangez un castor !
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.