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 :

Thread Hibernate qui reste boucler indéfiniement.


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 128
    Par défaut Thread Hibernate qui reste boucler indéfiniement.
    Bonjour à tous,

    Je rencontre un problème assez bizarre avec hibernate au niveau de l'accès aux données. Sur les pages de mon application je peux effectuer plusieurs lectures (n'importe lesquels) mais au bout de quelques tentatives (3/4), tous mes requêtes sont sans réponses et l'application tourne en boucle, la page reste en chargement et en attente de réponse.

    Je suis sur un serveur J2EE avec Spring pour traiter l'ensemble de la configuration de base d'Hibernate. La seule solution dans ce cas, est le redémarrage du serveur TOMCAT, à ce moment les pages en attente de chargement renvoi cette erreur :

    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
    63
    64
    65
    exception
     
    javax.servlet.ServletException
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
    	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
    	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
    	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
    	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
     
    cause mère
     
    java.lang.NullPointerException
    	org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:788)
    	org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:96)
    	org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
    	org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource.getConnection(AbstractRoutingDataSource.java:133)
    	org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:82)
    	org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
    	org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
    	org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:140)
    	org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1551)
    	org.hibernate.loader.Loader.doQuery(Loader.java:673)
    	org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
    	org.hibernate.loader.Loader.doList(Loader.java:2217)
    	org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2108)
    	org.hibernate.loader.Loader.list(Loader.java:2103)
    	org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:94)
    	org.hibernate.impl.SessionImpl.list(SessionImpl.java:1570)
    	org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
    	fr.locatsoft.lims.persistance.dao.impl.FournisseurDaoImpl.list(FournisseurDaoImpl.java:35)
    	fr.locatsoft.lims.service.metier.impl.FournisseurServiceImpl.list(FournisseurServiceImpl.java:27)
    	fr.locatsoft.lims.web.bean.FournisseurListBean.Load(FournisseurListBean.java:69)
    	fr.locatsoft.lims.web.bean.FournisseurListBean.getList(FournisseurListBean.java:221)
    	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	java.lang.reflect.Method.invoke(Method.java:592)
    	javax.el.BeanELResolver.getValue(BeanELResolver.java:62)
    	javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)
    	com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:58)
    	org.apache.el.parser.AstValue.getValue(AstValue.java:118)
    	org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
    	com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71)
    	javax.faces.component.UIData.getValue(UIData.java:577)
    	org.ajax4jsf.component.UIDataAdaptor.getValue(UIDataAdaptor.java:1624)
    	org.ajax4jsf.component.SequenceDataAdaptor.getDataModel(SequenceDataAdaptor.java:65)
    	org.ajax4jsf.component.SequenceDataAdaptor.createDataModel(SequenceDataAdaptor.java:59)
    	org.richfaces.component.UIDataTable.createDataModel(UIDataTable.java:121)
    	org.ajax4jsf.component.UIDataAdaptor.getExtendedDataModel(UIDataAdaptor.java:621)
    	org.ajax4jsf.component.UIDataAdaptor.setRowKey(UIDataAdaptor.java:339)
    	org.ajax4jsf.component.UIDataAdaptor.iterate(UIDataAdaptor.java:1017)
    	org.ajax4jsf.component.UIDataAdaptor.processDecodes(UIDataAdaptor.java:1140)
    	org.ajax4jsf.component.UIDataAdaptor.processDecodes(UIDataAdaptor.java:1150)
    	org.ajax4jsf.component.UIAjaxForm.processDecodes(UIAjaxForm.java:63)
    	org.ajax4jsf.component.AjaxViewRoot$1.invokeContextCallback(AjaxViewRoot.java:395)
    	org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:235)
    	org.ajax4jsf.component.AjaxViewRoot.processDecodes(AjaxViewRoot.java:412)
    	com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:101)
    	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:266)
    	com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:132)
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
    	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
    	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
    	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
    	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
    Environnement d'exécution :
    Windows XP SP3
    JAVA 1.5
    Spring 2.5.6
    Hibernate 3.2.7
    JSF


    Je n'ai aucun message d'erreur sinon pendant le "chargement en boucle", quelque aurait une idée du problème ou d'un moyen de savoir d'où ca pourrait venir ?

    Merci !

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    a mon avis ca tourne pas en boucle (a moins que tu soit à 100% de cpu) mais t'as plutot tes requete hibernate qui sont en attente de quelque chose. T'as en fait probablement un deadlock dans ton application. Si t'es sous linux, envoie le signal 3 avec la commande kill à ta jvm pour avoir un thread dump, ca te dira ou attendent tous les threads. T'en aura probablement un gros paquet au même endroit qui attend probablement sur la DB et un ou plusieurs ailleurs qui s'attendent probablement mutuellement.

  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
    Ça pourrait venir du fait que tu ne libères pas la connexion après usage et qu'au cycle suivant tu en demandes une autre.
    Donc, très vite, tu arriveras au nombre maximum de connexion du pool et là... il attend un temps déterminé (timeout) avant de planter...

    Peux-tu montrer le code ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 128
    Par défaut
    Merci de vos réponses !

    tchize_ -> étant sur windows je n'ai pas accès à ce genre de commande, existe il un moyen sur eclipse de pouvoir faire un dump des threads ?

    OButterlin -> Etant donné que c'est spring qui gère hibernate, je ne m'occupe plus des ouvertures / fermetures des connections, je vois donc pas quel code je pourrais te communiquer, si tu as une idée ?

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    eclipse affiche en temps réel la liste des thread de ton application dans l'interface de debuggage. Met juste en pause dans cette même interface, pour éviter que ca saute dans tous les sens.

Discussions similaires

  1. Lancer un thread qui reste en écoute sur un port
    Par maestro_mirou dans le forum Threads & Processus
    Réponses: 3
    Dernier message: 02/04/2012, 10h39
  2. etat qui reste en arriere plan
    Par azde7015 dans le forum Access
    Réponses: 3
    Dernier message: 21/02/2006, 12h55
  3. [C#][JS] Page qui reste en arrière plan
    Par Jap dans le forum ASP.NET
    Réponses: 2
    Dernier message: 13/02/2006, 09h20
  4. [wxpython] bitmap bouton qui reste pressé
    Par hysah dans le forum wxPython
    Réponses: 3
    Dernier message: 20/01/2006, 20h41
  5. barre des taches qui reste apparente
    Par arfy dans le forum Windows XP
    Réponses: 5
    Dernier message: 25/11/2005, 08h33

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