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

Hibernate Java Discussion :

Hibernate et session


Sujet :

Hibernate Java

  1. #1
    F2S
    F2S est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 139
    Par défaut Hibernate et session
    Bonjour a tous,

    me voilà encore confronter à une erreur assez délicate.J'utilise hibernate 2.8 et weblogic8.1
    voilà l'erreur :
    [java.sql.SQLException] : The transaction is no longer active - status: 'Committed'. No further JDBC access is allowed within this transaction.
    [net.sf.hibernate.exception.GenericJDBCException] : could not load: [com.fnac.piloting.treasury.bean.UserInformation#se-fnac]
    [fr.ibm.calypso.services.dao.DAOException] : Cannot get object of class com.fnac.piloting.treasury.bean.UserInformationwith pk se-fnac

    at com.fnac.vulcain.exception.ExceptionBuilder.buildSafeTechnicalException(Lcom/fnac/vulcain/exception/TechnicalExceptionLcom/fnac/vulcain/exception/TechnicalException;(ExceptionBuilder.java:90)
    at com.fnac.piloting.treasury.components.UserAdminServiceBean.getUserInformation(Ljava/lang/StringLcom/fnac/piloting/treasury/bean/UserInformation;(UserAdminServiceBean.java:176)
    at com.fnac.piloting.treasury.components.UserAdminService_vm0r4e_EOImpl.getUserInformation(Ljava/lang/StringLcom/fnac/piloting/treasury/bean/UserInformation;(UserAdminService_vm0r4e_EOImpl.java:748)
    at com.fnac.piloting.treasury.components.delegate.UserAdminServiceDelegate.getUserInformation(Ljava/lang/StringLcom/fnac/piloting/treasury/bean/UserInformation;(UserAdminServiceDelegate.java:105)
    at com.fnac.piloting.treasury.action.authent.ChangePasswordAction.execute(Lorg/apache/struts/action/ActionMapping;Lorg/apache/struts/action/ActionForm;Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponseLorg/apache/struts/action/ActionForward;(ChangePasswordAction.java:87)
    at org.apache.struts.action.RequestProcessor.processActionPerform(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;Lorg/apache/struts/action/Action;Lorg/apache/struts/action/ActionForm;Lorg/apache/struts/action/ActionMappingLorg/apache/struts/action/ActionForward;(RequestProcessor.java:484)
    at be.ff.gui.web.struts.action.ActionPlugInTilesRequestProcessor.processActionPerform(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;Lorg/apache/struts/action/Action;Lorg/apache/struts/action/ActionForm;Lorg/apache/struts/action/ActionMappingLorg/apache/struts/action/ActionForward;(ActionPlugInTilesRequestProcessor.java:60)
    at com.fnac.piloting.treasury.share.TreasuryRequestProcessor.processActionPerform(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;Lorg/apache/struts/action/Action;Lorg/apache/struts/action/ActionForm;Lorg/apache/struts/action/ActionMappingLorg/apache/struts/action/ActionForward;(TreasuryRequestProcessor.java:78)
    at org.apache.struts.action.RequestProcessor.process(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponseV(RequestProcessor.java:274)
    at org.apache.struts.action.ActionServlet.process(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponseV(ActionServlet.java:1482)
    at org.apache.struts.action.ActionServlet.doPost(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponseV(ActionServlet.java:525)
    at javax.servlet.http.HttpServlet.service(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponseV(HttpServlet.java:760)
    at javax.servlet.http.HttpServlet.service(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponseV(HttpServlet.java:853)
    at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run()Ljava/lang/Object;(ServletStubImpl.java:1072)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Lweblogic/servlet/internal/FilterChainImplV(ServletStubImpl.java:465)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponseV(ServletStubImpl.java:348)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run()Ljava/lang/Object;(WebAppServletContext.java:6981)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Lweblogic/security/subject/AbstractSubject;Ljava/security/PrivilegedActionLjava/lang/Object;(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(Lweblogic/security/acl/internal/AuthenticatedSubject;Lweblogic/security/acl/internal/AuthenticatedSubject;Ljava/security/PrivilegedActionLjava/lang/Object;(SecurityManager.java:121)
    at weblogic.servlet.internal.WebAppServletContext.invokeServlet(Lweblogic/servlet/internal/ServletRequestImpl;Lweblogic/servlet/internal/ServletResponseImplV(WebAppServletContext.java:3892)
    at weblogic.servlet.internal.ServletRequestImpl.execute(Lweblogic/kernel/ExecuteThreadV(ServletRequestImpl.java:2766)
    at weblogic.kernel.ExecuteThread.execute(Lweblogic/kernel/ExecuteRequestV(ExecuteThread.java:224)
    at weblogic.kernel.ExecuteThread.run()V(ExecuteThread.java:183)
    at java.lang.Thread.startThreadFromVM(Ljava/lang/ThreadV(Unknown Source)

    si vous avez une idée.......

  2. #2
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    HUmmm. LE code de ta DAO qui fait ca se serait bien de le montrer. Parce que sinon ca va etre dur.

    Mais sinon j'ai p'etre quelques pistes. Ne ferme tu pas la connexion avant de vouloir commiter? C'est un commit automatique via hibernate ou c'est toi qui le fait automatiquement?

  3. #3
    F2S
    F2S est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 139
    Par défaut dsl pour le temp de réponse, j'ai au d'autre soucis plus important à traiter
    voilà le code de l'action :

    UserAdminService service =
    (UserAdminService) getBusinessDelegate(UserAdminService.class);
    service.changeUserPassword(user.getLogin(),
    inputForm.getNewPassword1(), DOMAIN);
    UserInformation userInfo =
    service.getUserInformation(user.getLogin());
    userInfo.setPasswordMustChange(false);
    service.saveUserInformation(userInfo);

    return mapping.findForward(SUCCESS_FWD);


    la méthode du service :
    public void saveUserInformation(UserInformation userInfo)
    throws TreasuryBusinessException {
    ProcessContext ctx =
    new ProcessContext(this, UserInformationDAO.class);

    try {
    // initialize process context (open session and get DAO)
    UserInformationDAO dao = (UserInformationDAO) ctx.initialize();

    dao.update(userInfo);

    } catch (SessionException se) {
    //something wrong occurs
    getLogger().error("Error in process saveUserInformation() ", se);
    throw se;
    } finally {
    closeSession(ctx);
    }
    }

  4. #4
    F2S
    F2S est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 139
    Par défaut dsl pour le temp de réponse, j'ai au d'autre soucis plus important à traiter
    voilà le code de l'action :

    UserAdminService service =
    (UserAdminService) getBusinessDelegate(UserAdminService.class);
    service.changeUserPassword(user.getLogin(),
    inputForm.getNewPassword1(), DOMAIN);
    UserInformation userInfo =
    service.getUserInformation(user.getLogin());
    userInfo.setPasswordMustChange(false);
    service.saveUserInformation(userInfo);

    return mapping.findForward(SUCCESS_FWD);


    la méthode du service :
    public void saveUserInformation(UserInformation userInfo)
    throws TreasuryBusinessException {
    ProcessContext ctx =
    new ProcessContext(this, UserInformationDAO.class);

    try {
    // initialize process context (open session and get DAO)
    UserInformationDAO dao = (UserInformationDAO) ctx.initialize();

    dao.update(userInfo);

    } catch (SessionException se) {
    //something wrong occurs
    getLogger().error("Error in process saveUserInformation() ", se);
    throw se;
    } finally {
    closeSession(ctx);
    }
    }


    mon DAO : il contient des méthode qui n'ont rien a voir avec mon soucis
    public class UserInformationDAOHibernateImpl extends HibernateGenericDAOImpl
    implements UserInformationDAO {
    /**
    * Constructor
    */
    public UserInformationDAOHibernateImpl() {
    super();
    }
    }


    le plus bizard est que cette erreur se produit uniquement lorsque je déploye mon appli sur un environnement distant. qd je fais tourner mon appli en locale tout fonctionne à merveille...

  5. #5
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Tu tapes toujours sur la meme base?
    OU est ce qu'il plante?

  6. #6
    F2S
    F2S est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 139
    Par défaut
    ça y est j'ai trouvé le soucis :
    -en faite il se plantais sur : "UserInformation userInfo =
    service.getUserInformation(user.getLogin());"

    le soucis venait de la méthode précédente : service.changeUserPassword(user.getLogin(),inputForm.getNewPassword1(), DOMAIN);

    Dans cette méthode une connexion était ouverte mais pas fermée, la clause finally était absente :
    try {
    // initialize process context (open session and get DAO)
    UserInformationDAO dao = (UserInformationDAO) ctx.initialize();
    dao.findForLogin(userLogin);
    } catch (SessionException se) {
    //something wrong occurs
    getLogger().error("Error in process getUserInformation() ", se);
    throw se;
    } finally {
    closeSession(ctx);
    }


    donc certainnement que lorsque je réouvrait une connexion avec le même nom de "ProcessContext", il devait se banané...

    mais par contre je me demande qd même pourquoi, en local cela fonctionnait lorsque je déployais l'appli avec Eclipse... ???

    y a t - il une relation avec le Garbage collector ???

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Hibernate] Exception session is closed
    Par K-Kaï dans le forum Hibernate
    Réponses: 29
    Dernier message: 02/11/2011, 09h33
  2. hibernate : probleme session.load
    Par doudou_angelus dans le forum Hibernate
    Réponses: 2
    Dernier message: 20/09/2007, 09h23
  3. org.hibernate.SessionException: Session is closed
    Par Le Pharaon dans le forum Hibernate
    Réponses: 7
    Dernier message: 26/07/2007, 17h42
  4. hibernate et session factory
    Par sandytarit dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 17/01/2007, 13h10
  5. [Hibernate][Spring] Session Hibernate initialisée
    Par mauvais_karma dans le forum Hibernate
    Réponses: 12
    Dernier message: 08/08/2005, 13h07

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