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

JSF Java Discussion :

Erreur "java.lang.IllegalStateException"


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2010
    Messages
    182
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 182
    Par défaut Erreur "java.lang.IllegalStateException"
    Bonjour:

    j'ai crée un petit projet avec JPA et JSF le problème lorsque j’exécute la méthode d'ajout dans le serveur Tomcat
    une exception s'affiche
    java.lang.IllegalStateException:
    Exception Description: Transaction is currently active

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public void ajouter(User u){
    		try {
    		EntityTransaction tx = getEntityManager().getTransaction();
     
    		tx.begin();
    		getEntityManager().persist(u);
    		tx.commit();
    		} catch (Exception e) {
    			System.out.println(e);
    		}
     
     
    	}
    La classe AddUser.jsf
    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
    42
    43
    44
    45
    <%@ page contentType="text/html" pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
    <f:view>
    <html>
    <head>
     
    <title>Insert title here</title>
     
    </head>
    <center>
    <body>
    <h:form>
    <center><h1>Ajouter un utilisateur</h1></center>
     
    			<h>login</h>
    			<h:inputText value="#{UserCtrl.newUser.login}"></h:inputText>
    			<h>pws</h>
    			<h:inputSecret value="#{UserCtrl.newUser.pwd}" />
    			<h>nom</h>
    			<h:inputText value="#{UserCtrl.newUser.nom}"></h:inputText>
    			<h>prenom</h>
    			<h:inputText value="#{UserCtrl.newUser.prenom}"></h:inputText>
    			<h>mail</h>
    			<h:inputText value="#{UserCtrl.newUser.mail}"></h:inputText>
    			<h>role</h>
    			<h:inputText value="#{UserCtrl.newUser.role}"></h:inputText>
     
    			<h>sexe</h>
     
    			<h:inputText value="#{UserCtrl.newUser.sexe}"></h:inputText>
    			<h>niv</h>
     
                 <h:inputText value="#{UserCtrl.newUser.niveau}"></h:inputText>
     
    		<br>
    		<h:commandButton value="ok" action="#{UserCtrl.ajoutUser}"></h:commandButton>
    		</center>
     
     
     
    </h:form>
    </body>
    </html>
    </f:view>
    la classe userCtrl.java
    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
    42
    43
    44
    45
    46
    47
    package com.FirstWebProject.Bean;
     
    import com.FirstWebProject.DAO.UseDAO;
    import com.FirstWebProject.Persistance.User;
     
    public class UserCtrl {
    	private UseDAO  useDAO = new UseDAO() ;
    	private User newUser = new User();
    	private User cUser = new User();
     
     
     
    	public String cnx(){
     
    	return useDAO.connexion(cUser.getLogin(), cUser.getPwd());
     
    	}
     
     
    	public String ajoutUser(){
    		useDAO.ajouter(newUser);
     
    		return "ajout";
     
    	}
     
     
    	public void setNewUser(User newUser) {
    		this.newUser = newUser;
    	}
     
    	public User getNewUser() {
    		return newUser;
    	}
     
     
    	public void setcUser(User cUser) {
    		this.cUser = cUser;
    	}
     
    	public User getcUser() {
    		return cUser;
    	}
     
     
     
    }

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 37
    Par défaut
    Bonjour,

    Il y aurait des transactions déjà ouvertes ?
    Je pense que ça pourrait être la méthode getEntityManager() qui peut poser problème, peut-on la voir ?

    Cordialement

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2010
    Messages
    182
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 182
    Par défaut
    j'ai résolu le problème de transaction mais rien ne se passe dans la base de données et tomcat ne m'affiche aucune exception

  4. #4
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    as-tu mis un break-point au niveau de la sauvegarde pour savoir si l´object existe vraiment avant la sauvegarde?

    Eric

  5. #5
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    bonjour,

    il ne faut pas se contenter d'appeler la méthode persist, mais il faut aussi indiquer qu'il faut envoyer les données à la base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    // em --> EntityManager
    em.persist(user);
    em.flush(); // sans cette instruction, rien en base
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 3
    Dernier message: 08/04/2013, 08h26
  2. Erreur JSF java.lang.IllegalStateException
    Par lamia89 dans le forum JSF
    Réponses: 3
    Dernier message: 08/05/2012, 14h42
  3. Réponses: 2
    Dernier message: 29/07/2011, 11h49
  4. Réponses: 0
    Dernier message: 21/04/2011, 12h04

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