IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JOnAS Java Discussion :

[deadlock] Gestion des transactions


Sujet :

JOnAS Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 68
    Points : 42
    Points
    42
    Par défaut [deadlock] Gestion des transactions
    Bonjour,

    Je suis en train de développer une application de généalogie (pour mon compte personnel) en J2EE 2.0 avec JOnAS (4.10.7-Tomcat5.5.28) sur un poste Window Vista.

    Quand je tente de mettre à jour un objet décès par exemple, j'obtiens l'exception suivante après une minute d'attente dans l'appel à la fonction setDecesTO censée modifier le bean DecesBean

    2010-06-12 19:58:33,104 : INFO : JotmBatch : TransactionImpl.timeoutExpired : set rollback only (tx=bb14:38:0:019a638802211cb097...ddc401
    2010-06-12 19:58:33,276 : WARNING : RMI TCP Connection(14)-192.168.1.10 : JEntitySwitchCS.waitmyturn : 0000 getICtx IT: transaction rolled back
    2010-06-12 19:58:33,276 : SEVERE : RMI TCP Connection(14)-192.168.1.10 : JFactory.postInvoke : system exception in business method:
    javax.ejb.TransactionRolledbackLocalException: rollback occured while waiting
    at org.objectweb.jonas_ejb.container.JEntitySwitchCS.waitmyturn(JEntitySwitchCS.java:161)
    at org.objectweb.jonas_ejb.container.JEntitySwitch.mapICtx(JEntitySwitch.java:664)
    at org.objectweb.jonas_ejb.container.JEntitySwitch.getICtx(JEntitySwitch.java:568)
    at org.objectweb.jonas_gen.genealogie.entity.gpinterface.gplocalbean.JOnASDeces663426221Local.setDecesTO(JOnASDeces663426221Local.java:190)
    at genealogie.session.stateless.bean.DecesServiceBean.modifierDeces(DecesServiceBean.java:158)
    Je pense donc que je suis tombé dans un deadlock, mais je ne comprends pas comment.

    J'ai trouvé sur internet un bug JOnAS 4.10.7 qui ressemble
    http://jira.ow2.org/browse/JONAS/fixforversion/10056
    J'ai donc changé de version jonas (-> 4.10.8) mais sans succés
    Je suis revenu en 4.10.7 (la version 4.10.8 est instable sur mon poste)

    Je ne sais plus que chercher.

    Merci pour votre aide

    Cordialement,
    Gilbert Pêche

    Version de JVM
    2010-06-12 19:20:57,959 : INFO : main : Server.<init> : JVM used is 1.6.0_16 version of Java HotSpot(TM) Client VM-14.2-b01/Sun Microsystems Inc. vendor on Windows Vista 6.0/x86 OS.
    La fonction utilisée dans decesservice est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public DecesTO modifierDeces( AncetreTO ancetreTO, DecesTO decesTO)
    La fonction utilisée dans personneService est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public PersonneTO modifierPersonne(AncetreTO ancetreTO, PersonneTO personneTO, DecesTO decesTO)
                 throws EJBException{
    - jonas JOnAS4.10.7-Tomcat5.5.28
    - jdk sdk_5_7
    - Posgresql 8.4
    Fichiers attachés Fichiers attachés

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 68
    Points : 42
    Points
    42
    Par défaut [DeadLock]
    bonjour,

    je suis de plus en plus persuadé que je suis tombé dans un bug jonas

    dans le bean session DecesService, je mets à jour l'entity bean Acte à travers du bean session ActeServiceBean puis je mets à jour l'entity bean DecesBean

    le contexte transactionnel est mandatory pour la fonction modifierDeces de DecesService, pour la fonction modifierActe de ActeService, la fonction setDecesTO de Deces et la fonction setActeTO de Acte, supports pour toutes les autres fonction

    la tansaction est initialisée par la façade qui appelle DecesService

    ActeService après la mise à jour de Acte recherche la Ville correpondante
    les méthodes de VilleService et de Ville sont avec l'attribut transactionnel Supports

    en modifiant le contexte transactionnel : RequiresNew seulement sur setActeTO du bean acte et SetDecesTO du bean Deces le programme fonctionne mais on crée ainsi des actes potentiellement orphelin


    pourriez me dire si ma démarche est correcte ou non

    merci pour votre aide

    Cordialement,
    Gilbert Pêche

  3. #3
    Membre VIP Avatar de kalysto
    Profil pro
    Développeur
    Inscrit en
    Mars 2003
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mars 2003
    Messages : 442
    Points : 568
    Points
    568
    Par défaut
    Salut

    Je ne saurais que trop vous conseiller de poser cette question (avec tous les details que vous donnez) sur une des listes du projet JOnAS, ou quelqu'un qui connait bien les transactions pourra surement vous répondre.
    • jonas -at- ow2.org: liste en anglais (plus de monde)
    • jonas-fr -at- ow2.org: liste en francais


    Sinon, pourquoi n'utilisez vous pas le dernier JOnAS (5.1.x) ?
    Et pourquoi ne pas faire du Java EE 5 : EJB3, JPA,, annotations (facilité de developpement) ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 68
    Points : 42
    Points
    42
    Par défaut
    Bonjour,


    je vous remercie pour votre réponse,

    l'objectif de ma question était d'abord de savoir si ma démarche est correcte ou érronée

    l'utilisation des EJB2.0 et de BMP est avant tout pour bien comprendre cette architecture, avec à la base quelquechose somlme toute d'assez "rudimentaire"

    mais l'évolution vers EJB3 est prévue, je souhaite juste un exemple complet qui fonctionne


    Merci et cordialement

    Gilbert Pêche

  5. #5
    Membre VIP Avatar de kalysto
    Profil pro
    Développeur
    Inscrit en
    Mars 2003
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mars 2003
    Messages : 442
    Points : 568
    Points
    568
    Par défaut
    En fait entre EJB 2 et 3, les concepts restent les memes, ce qui change, c'est la facilité de mise en oeuvre.
    Donc tu ne perdras rien à utiliser les EJB3

    Sinon, pour le soucis de transaction, moi, j'ai l'impression qu'une instance de l'entity Deces est utilisé dans 2 transactions différentes. Il faudrait que tu regardes ton flot d'execution afin de voir ou sont les demarcations des transactions...

    Mais c'est la toute mes connaissances sur les transactions. Pour plus de détails et un interlocuteur vraiment compétent, je te conseille d'en parler sur les listes officielles

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 68
    Points : 42
    Points
    42
    Par défaut
    Bonjour,


    je vais faire ce que vous dites mais dans un deuxième temps

    1 je vais continuer avec la solution de contournement, car j'ai besoin que le produit fonctionne rapidement

    2 dès que j'aurai récupérer du temps, j'enclencherai la version 2 qui sera en EJB 3 avec peut être hibernate

    3 je rééutidierai les transactions à ce moment (si c'est encore nécessaire), ce qui laisse à la version de JONAS le temps de murir

    Merci pour votre réponse et cordialement,
    Gilbert Pêche

  7. #7
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Dès que j'aurai récupérer du temps, j'enclencherai la version 2 qui sera en EJB 3 avec peut être hibernate

    3 je rééutidierai les transactions à ce moment (si c'est encore nécessaire), ce qui laisse à la version de JONAS le temps de murir
    Normalement avec l'utilisation des EJB c pas toi qui gères les transactions, c'est complètement transparent pour toi, si tu veux utiliser les EJB3, il faudrait migrer en Jonas 5, ou rester en Jonas 4 et le coupler à un conteneur EJB comme EasyBean.
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 68
    Points : 42
    Points
    42
    Par défaut
    Bonjour,

    Merci pour votre réponse.

    Quand je parle de gestion des transactions, c'est positionner le bon "contexte transactionnel" des différentes méthodes des différents bean( RequiresNew, Support ) dans le descripteur xml.

    Cordialement,
    Gilbert Pêche

Discussions similaires

  1. Gestion des transactions avec les composants DOA
    Par lper dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/12/2008, 16h06
  2. [ORACLE] : Gestion des transactions
    Par dcollart dans le forum Oracle
    Réponses: 5
    Dernier message: 07/07/2006, 08h49
  3. [Data] Gestion des transactions
    Par hlr dans le forum Spring
    Réponses: 2
    Dernier message: 21/02/2006, 09h47
  4. Gestion des transactions - Gestion des erreurs
    Par devdev dans le forum MS SQL Server
    Réponses: 14
    Dernier message: 23/03/2005, 20h17
  5. gestion des transactions
    Par viny dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/03/2004, 21h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo