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 bloque sur la connexion


Sujet :

Hibernate Java

  1. #1
    Membre éclairé Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Par défaut Hibernate bloque sur la connexion
    Hello,

    Je tente d'établir une connexion, mais hibernate se bloque sur la commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Session session = HibernateUtil.currentSession();
    et plus rien ne se passe ensuite... Pourquoi?

    La méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     public static Session currentSession() throws HibernateException {
            Session s = (Session) session.get();
            // open a session if not already opened
            if (s == null) {
                s = sessionFactory.openSession();
                session.set(s);
            }
            return s;
        }
    Voici mes logs:
    01:35:40 [DEBUG] [ch.iict.asdf.eascia.recup.RecupThread] (run:50): Recuperation thread...
    01:35:40 [DEBUG] [org.apache.commons.configuration.ConfigurationUtils] (locate:269): Configuration loaded from the base path ./src/main/config/generalConfig.properties
    01:35:40 [DEBUG] [org.apache.commons.configuration.ConfigurationUtils] (locate:269): Configuration loaded from the base path ./src/main/config/generalConfig.properties
    01:35:40 [DEBUG] [org.apache.commons.configuration.ConfigurationUtils] (locate:269): Configuration loaded from the base path ./src/main/config/generalConfig.properties
    01:35:40 [DEBUG] [ch.iict.asdf.eascia.recup.FileSystemAccount] (run:53): 19 files found in ./mails/import and subfolders
    STORE
    01:35:40 [ INFO] [org.hibernate.cfg.Environment] (<clinit>:474): Hibernate 3.1 rc2
    01:35:40 [ INFO] [org.hibernate.cfg.Environment] (<clinit>:504): hibernate.properties not found
    01:35:40 [ INFO] [org.hibernate.cfg.Environment] (<clinit>:520): using CGLIB reflection optimizer
    01:35:40 [ INFO] [org.hibernate.cfg.Environment] (<clinit>:550): using JDK 1.4 java.sql.Timestamp handling
    01:35:40 [ INFO] [org.hibernate.cfg.Configuration] (configure:1257): configuring from resource: /hibernate.cfg.xml
    01:35:40 [ INFO] [org.hibernate.cfg.Configuration] (getConfigurationInputStream:1234): Configuration resource: /hibernate.cfg.xml
    01:35:41 [DEBUG] [org.hibernate.util.DTDEntityResolver] (resolveEntity:42): trying to locate http://hibernate.sourceforge.net/hib...ration-3.0.dtd in classpath under org/hibernate/
    01:35:41 [DEBUG] [org.hibernate.util.DTDEntityResolver] (resolveEntity:56): found http://hibernate.sourceforge.net/hib...ration-3.0.dtd in classpath
    01:35:41 [DEBUG] [org.hibernate.cfg.Configuration] (addProperties:1218): hibernate.connection.driver_class=com.mysql.jdbc.Driver
    01:35:41 [DEBUG] [org.hibernate.cfg.Configuration] (addProperties:1218): hibernate.connection.password=dbpassword
    01:35:41 [DEBUG] [org.hibernate.cfg.Configuration] (addProperties:1218): hibernate.connection.url=jdbc:mysql://127.0.0.1:3306/dbname
    01:35:41 [DEBUG] [org.hibernate.cfg.Configuration] (addProperties:1218): hibernate.connection.username=root
    01:35:41 [DEBUG] [org.hibernate.cfg.Configuration] (addProperties:1218): hibernate.dialect=org.hibernate.dialect.MySQLDialect
    01:35:41 [DEBUG] [org.hibernate.cfg.Configuration] (addProperties:1218): hibernate.transaction.factory_class=org.hibernate.transaction.JDBCTransactionFactory
    01:35:41 [DEBUG] [org.hibernate.cfg.Configuration] (addProperties:1218): hibernate.current_session_context_class=org.hibernate.context.ThreadLocalSessionContext
    01:35:41 [DEBUG] [org.hibernate.cfg.Configuration] (parseMappingElement:1413): null<-org.dom4j.tree.DefaultAttribute@691f36 [Attribute: name resource value "RawMessage.hbm.xml"]
    01:35:41 [ INFO] [org.hibernate.cfg.Configuration] (addResource:460): Reading mappings from resource: RawMessage.hbm.xml
    01:35:41 [DEBUG] [org.hibernate.util.DTDEntityResolver] (resolveEntity:42): trying to locate http://hibernate.sourceforge.net/hib...apping-3.0.dtd in classpath under org/hibernate/
    01:35:41 [DEBUG] [org.hibernate.util.DTDEntityResolver] (resolveEntity:56): found http://hibernate.sourceforge.net/hib...apping-3.0.dtd in classpath
    01:35:41 [ INFO] [org.hibernate.cfg.HbmBinder] (bindRootPersistentClassCommonValues:266): Mapping class: ch.iict.asdf.eascia.persistance.RawMessage -> raw_msg
    01:35:41 [DEBUG] [org.hibernate.cfg.HbmBinder] (bindProperty:1179): Mapped property: Id -> rawMessageId
    01:35:41 [DEBUG] [org.hibernate.cfg.HbmBinder] (bindProperty:1179): Mapped property: insertionDate -> insertionDate
    01:35:41 [DEBUG] [org.hibernate.cfg.HbmBinder] (bindProperty:1179): Mapped property: uri -> uri
    01:35:41 [ INFO] [org.hibernate.cfg.Configuration] (doConfigure:1368): Configured SessionFactory: null
    01:35:41 [DEBUG] [org.hibernate.cfg.Configuration] (doConfigure:1369): properties: {..... enlevé le contenu trop long .....}
    01:35:41 [DEBUG] [org.hibernate.cfg.Configuration] (buildSessionFactory:1137): Preparing to build session factory with filters : {}
    01:35:41 [ INFO] [org.hibernate.cfg.Configuration] (secondPassCompile:1014): processing extends queue
    01:35:41 [ INFO] [org.hibernate.cfg.Configuration] (secondPassCompile:1018): processing collection mappings
    01:35:41 [ INFO] [org.hibernate.cfg.Configuration] (secondPassCompile:1027): processing association property references
    01:35:41 [ INFO] [org.hibernate.cfg.Configuration] (secondPassCompile:1049): processing foreign key constraints
    01:35:41 [ INFO] [org.hibernate.connection.DriverManagerConnectionProvider] (configure:41): Using Hibernate built-in connection pool (not for production use!)
    01:35:41 [ INFO] [org.hibernate.connection.DriverManagerConnectionProvider] (configure:42): Hibernate connection pool size: 20
    01:35:41 [ INFO] [org.hibernate.connection.DriverManagerConnectionProvider] (configure:45): autocommit mode: false
    01:35:41 [ INFO] [org.hibernate.connection.DriverManagerConnectionProvider] (configure:80): using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://127.0.0.1:3306/dbname
    01:35:41 [ INFO] [org.hibernate.connection.DriverManagerConnectionProvider] (configure:83): connection properties: {user=root, password=dbpassword}
    01:35:41 [DEBUG] [org.hibernate.connection.DriverManagerConnectionProvider] (getConnection:93): total checked-out connections: 0
    01:35:41 [DEBUG] [org.hibernate.connection.DriverManagerConnectionProvider] (getConnection:109): opening new JDBC connection

  2. #2
    Membre éclairé Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Par défaut
    En fait, c'est sur cette ligne que ça bloque, lors de l'instantiation de mon HibernateUtil:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sessionFactory = new Configuration().configure().buildSessionFactory();

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Tu as certainement une erreur de mapping dans un de tes fichiers hbm.
    Peux-tu mettre un point d'arrêt et vérifier dans le message d'exception ce qui coince ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre éclairé Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Par défaut
    Un point d'arret? Ou ca?

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    try
    {
       sessionFactory = new Configuration().configure().buildSessionFactory();
    }
    catch (Exception e)
    {
       System.out.println(e.getMessage()); <<-- là
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre éclairé Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Par défaut
    Ouais, j'ai essayé, mais pas d'exception... Il se bloque juste sur la commande... Il ne rentre pas dans le catch...

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Peux-tu montrer hibernate.cfg.xml ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre éclairé Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Par défaut
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                                             "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
        <session-factory>
            <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="hibernate.connection.password">dbpassword</property>
            <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/dbname</property>
            <property name="hibernate.connection.username">root</property>
            <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
     
            <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
            <property name="hibernate.current_session_context_class">org.hibernate.context.ThreadLocalSessionContext</property>
     
            <mapping resource="RawMessage.hbm.xml" />
        </session-factory>
    </hibernate-configuration>
    Le fichier RawMessage.hbm.xml se trouve au même endroit et à l'air correct (vraiement simple...)

    Une idée?

    Merci d'avance...

  9. #9
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Ça à l'air des plus commun...
    Peux-tu faire le test de supprimer les lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <property name="hibernate.transaction.factory_class">
    <property name="hibernate.current_session_context_class">
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre éclairé Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Par défaut
    Héhé, déjà testé, ça ne change rien...

    Ma classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class RawMessage {
        private int id;
        private String uri;
        private Date insertionDate;
     
        @Transient
        private Account account;    
        @Transient
        private int hash;
        @Transient
        private DecapMessage decapMessage;
     
        // tous les getters et setters
    }
    Mon fichier de mapping 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
    15
    16
    17
    18
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
     
    <hibernate-mapping package="ch.iict.iscia.eascia.persistance">
        <class name="RawMessage" table="raw_msg">
            <id column="rawMessageId" name="Id" type="integer">
                <generator class="increment" />
            </id>
     
            <property column="insertionDate" length="19" name="insertionDate"
                not-null="true" type="timestamp" />
     
            <property column="uri" length="256" name="uri" not-null="true"
                type="string" />
        </class>
    </hibernate-mapping>
    Je bloque...

  11. #11
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Je ne vois pas trop...
    Tu es sûr du port 3306 ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Membre éclairé Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Par défaut
    oui, 3306 sûr...

  13. #13
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Je ne sais pas
    Essaye éventuellement ce code, mais je suppose que le tien est très proche...
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    package com.hibernate.utilities;
     
    import org.apache.log4j.Logger;
    import org.hibernate.HibernateException;
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
     
    public class HibernateUtils 
    {
        private static final SessionFactory sessionFactory;
        private static final Logger logger = Logger.getLogger(HibernateUtils.class);
     
        static 
        {
            try 
            {
                logger.debug("Création Session Factory Hibernate");
                sessionFactory = new Configuration().configure().buildSessionFactory();
            } 
            catch (HibernateException ex) 
            {
                logger.error("Erreur lors de la création de la Session Factory Hibernate : " + ex.getMessage());
                throw new RuntimeException("Problème de configuration : " + ex.getMessage(), ex);
            }
        }
     
        public static final ThreadLocal session = new ThreadLocal();
     
        /**
         *    Récupération de la session Hibernate
         */
        public static Session currentSession() throws HibernateException 
        {
            Session s = (Session) session.get();
     
            // Ouvre une nouvelle Session, si ce Thread n'en a aucune
            if (s == null) 
            {
                logger.debug("Acquisition d'une nouvelle Session Hibernate pour le Thread " + Thread.currentThread().hashCode());
                s = sessionFactory.openSession();
                session.set(s);
            }
     
            logger.debug("Récupération de la Session Hibernate " + s.hashCode() + " pour le Thread " + Thread.currentThread().hashCode());
            return s;
        }
     
        /**
         *    Fermeture de la session Hibernate
         */
        public static void closeSession() throws HibernateException 
        {
            Session s = (Session) session.get();
            if ( s == null ) return ;
     
            logger.debug("Fermeture de la Session Hibernate " + s.hashCode() + " pour le Thread " + Thread.currentThread().hashCode());
            session.set(null);
            s.close();
        }    
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  14. #14
    Membre éclairé Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Par défaut
    Pareil, dernière ligne du log:
    05:39:59 [DEBUG] [org.hibernate.connection.DriverManagerConnectionProvider] (getConnection:109): opening new JDBC connection

    ... Pfff...

  15. #15
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ploxien Voir le message
    ... Pfff...
    Comme tu dis !

    Par hasard, ta base possède un grand nombre de schéma ?
    Si tu laisses tourner, au bout d'un moment, il passe ou il lance une exception ou il reste bloqué ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  16. #16
    Membre éclairé Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Par défaut
    Alors, vraiment étrange...

    En fait, ce code est exécute dans un thread... Mais si je le met dans mon main pour tester, ça marche...

    Pourquoi cela change-il qqch?

    Le code concerné:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
          try {
                Session session = HibernateUtil.currentSession();
                Transaction tx = session.beginTransaction();
                HTest test = new HTest(3,5);
                session.save(test);
                tx.commit();
            }catch(Exception e) {
                e.printStackTrace();
            }

  17. #17
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Effectivement, j'ai fait ce rapide test (sur la base de la classe HibernateUtils précédente), ça fait la même chose... il bloque sur la première instruction du bloc static (le Logger)
    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
     
    package com.clemessy.patch;
     
    import java.util.List;
     
    import com.clemessy.hibernate.objects.AlUtilisateur;
    import com.clemessy.hibernate.utilities.HibernateUtils;
    import org.hibernate.Session;
     
     
    public class Test
    {
        public static void main(String[] args)
        {
            Session session = HibernateUtils.currentSession();
            UnThread thread = new UnThread();
            thread.session = session;
            thread.start();
        }
    }
     
    class UnThread extends Thread
    {
        Session session = null;
     
        @Override
        public void run()
        {
            for (AlUtilisateur user : (List<AlUtilisateur>)session.createQuery("from AlUtilisateur").list())
            {
                System.out.println(user.getUtiNom());
            }
        }
     
    }
    Si un spécialiste du langage passe par là, je suis preneur pour une explication
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [PLUG IN HIBERNATE] introuvable sur le net
    Par PamelaGeek dans le forum Eclipse Java
    Réponses: 11
    Dernier message: 02/01/2006, 18h35
  2. [Hibernate]Question sur Hibernate
    Par elhani dans le forum Hibernate
    Réponses: 2
    Dernier message: 30/12/2005, 15h39
  3. Réponses: 2
    Dernier message: 15/11/2005, 10h09
  4. Réponses: 5
    Dernier message: 21/10/2005, 22h25
  5. Réponses: 10
    Dernier message: 03/10/2005, 15h42

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