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

Java EE Discussion :

[Remote] IllegalStateException: impossible d'ajouter une ressource non-XA à une transaction JTS globale


Sujet :

Java EE

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 22
    Points : 12
    Points
    12
    Par défaut [Remote] IllegalStateException: impossible d'ajouter une ressource non-XA à une transaction JTS globale
    bonjour
    voila je suis débutant en java et j'ai un petit soucis avec mes ejbs.
    lorsqu'ils tournent sur la même machine (corbaname:iiop:localhost:3700... ) tout fonctionne.
    Seulement quand je met mes ejbs metiers sur un serveur distant et que je tente d'y accéder :

    Internal Exception: java.sql.SQLException: Erreur lors de l'établissement d'une connexion. Raison : java.lang.IllegalStateException: impossible d''ajouter une ressource non-XA à une transaction JTS globale.
    Error Code: 0
    Call: SQLCall(INSERT INTO utilisateur (prenom, etat, login, ip, pseudo, port, timeOut, nom, mdp) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?))
    Query: InsertObjectQuery(Ecml.Projet.metier.Utilisateur[idUtilisateur=null])

    gestionUtilisateur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    @Remote
    public interface gestionUtilisateurs {
     
        public int Inscription(String login,String mdp,String pseudo,String nom,String prenom);
    ...}
    gestionUtilisateurBean:
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    @Stateless
    public class gestionUtilisateursBeans implements gestionUtilisateurs {
     
        @PersistenceContext
        private EntityManager em;
        private FileWriter logFile;
        private DateFormat date;
        private DateFormat heure;
     
        public gestionUtilisateursBeans() {
            logFile = null;
            date = new SimpleDateFormat("dd-MM-yy-");
            heure = new SimpleDateFormat("hh:mm:ss: ");
        }
     
        public int Inscription(String login, String mdp, String pseudo, String nom, String prenom) {
            Query result = em.createNamedQuery("Inscription").setParameter("login", login);
            if (result.getResultList().isEmpty() == true) { //si le login n'existe pas déjà, on créé    
                //si le login n'existe pas déjà, on créé
                Utilisateur utilisateurAdd = new Utilisateur();
                utilisateurAdd.setLogin(login);
                utilisateurAdd.setMdp(mdp);
                utilisateurAdd.setPseudo(pseudo);
                utilisateurAdd.setNom(nom);
                utilisateurAdd.setPrenom(prenom);
                utilisateurAdd.setEtat(false);
                utilisateurAdd.setIp("NULL");
                utilisateurAdd.setPort(0);
                em.persist(utilisateurAdd);
                try {
                    logFile = new FileWriter("c:/" + date.format(new Date()) + "WSAnnuaire.log", true);
                    logFile.write(heure + "Ajout d'un nouveau contact( " + login + "," + pseudo + "," + nom + "," + prenom + ").\n");
                    logFile.close();
                } catch (IOException ex) {
                    Logger.getLogger(gestionUtilisateursBeans.class.getName()).log(Level.SEVERE, null, ex);
                }
                return 0;
            } else {
                return 1;
            }
        }
    l'interface (qui est un webservice):
    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
    21
    22
    23
    24
    25
    26
    27
    @Stateless
    @WebService
    public class AnnuaireWebServices {
     
        @EJB(name="gestionUtilisateurs")
        private gestionUtilisateurs gestUseWS;
        private static Map<String, Integer> listUsersKeys;
     
        public AnnuaireWebServices()
        {
            if (listUsersKeys == null) {
                listUsersKeys = new TreeMap<String, Integer>();
            }
        }
     
        @WebMethod
        public int WSInscription(@WebParam(name = "login") String login,@WebParam(name = "pass") String mdp,@WebParam(name = "pseudo") String pseudo,@WebParam(name = "nom") String nom,@WebParam(name = "prenom") String prenom)
        {
            int ret = -1;
            try {
                ret = gestUseWS.Inscription(login, mdp, pseudo, nom, prenom);
            } catch (Exception exception) {
               System.out.println("WSInscription :" + exception.toString());
            }
            return ret;
     
        }
    voila si quelqu'un peut m'aider ...

    edit:
    voici le sun-ejb-jar.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 EJB 3.0//EN" "http://www.sun.com/software/appserver/dtds/sun-ejb-jar_3_0-0.dtd">
    <sun-ejb-jar>
      <enterprise-beans>
        <ejb>
          <ejb-name>AnnuaireWebServices</ejb-name>
          <ejb-ref>
            <ejb-ref-name>gestionUtilisateurs</ejb-ref-name>
            <jndi-name>corbaname:iiop:localhost:3700#Ecml.Projet.ejb.gestionUtilisateurs</jndi-name>
          </ejb-ref>
        </ejb>
      </enterprise-beans>
    </sun-ejb-jar>

  2. #2
    Rédacteur
    Avatar de longbeach
    Profil pro
    Architecte de système d’information
    Inscrit en
    Avril 2003
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Avril 2003
    Messages : 943
    Points : 2 370
    Points
    2 370
    Par défaut
    Peut-être un problème de driver qui ne supporte pas le standard XA (eXtended Architecture).

    Quel serveur d'application et quel SGBD ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    merci de me répondre, alors j'utilise glassfish et mysql avec le dernier driver pour java.
    Les deux serveurs glassfish sont certainement de version différente (environ 1 an) celà peut il venir de cela?

  4. #4
    Membre habitué Avatar de medbouh
    Inscrit en
    Mars 2006
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2006
    Messages : 152
    Points : 171
    Points
    171
    Par défaut
    peut-on avoir ton fichier persistance.xml
    avant de poste pensez à c'est plus constructif.

    n'oublie pas d'utilise le bouton

    si vous trouvez la solution vous meme n'oublie pas de l'indiquer.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 205
    Points : 0
    Points
    0
    Par défaut
    salut !

    J'ai déja eu cette erreur une fois, je ne sais plus excatement comment je l'avais résolue, donc je vais te donner quelques pistes ...

    déja par rapport à ton erreur :
    Internal Exception: java.sql.SQLException: Erreur lors de l'établissement d'une connexion. Raison : java.lang.IllegalStateException: impossible d''ajouter une ressource non-XA à une transaction JTS globale.
    Error Code: 0
    Call: SQLCall(INSERT INTO utilisateur (prenom, etat, login, ip, pseudo, port, timeOut, nom, mdp) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?))
    Query: InsertObjectQuery(Ecml.Projet.metier.Utilisateur[idUtilisateur=null])
    Je m'interesse qu'a la partie en gras, car je pense que le haut du message d'erreur est impliqué par l'erreur en gras...

    Je pense que tu auto génère tes Ids pour les utilisateurs dans l'entity Utilisateur, a moins que celui ci soit login, ou pseudo (ton Id)

    car il parait evident qu'il ne veut simplement pas te l'insérer dans ta base car l'id donné au constructeur est nul ...

    Enfin meme, apparemment il ne connait aucun de tes arguments
    VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?))
    Et puisque tu dis que ca marche en local, le problème ne vient surement pas de là, mais quoi que ...

    Sinon autre piste, c'est surement dans la partie <provider> de ton persistance.xml qu'il y a un souci ... <transaction type jta>...

    enfin je peux pas te donner al solution exacte j'ai rien sous les yeux ...

    Mais à mon avis c'est un souci de provider...

    Tcho !

Discussions similaires

  1. Deux threads sur une ressource non protégée
    Par ikuzar dans le forum Applications et environnements graphiques
    Réponses: 8
    Dernier message: 01/03/2013, 15h44
  2. Réponses: 1
    Dernier message: 25/02/2009, 11h34
  3. Réponses: 5
    Dernier message: 07/03/2008, 11h46
  4. Ajout d'un champs dans une table - Non manuellement
    Par MurielVBA dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 14/01/2008, 13h25
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

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