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 :

Exécution qui bloque


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 39
    Par défaut Exécution qui bloque
    Bonjour,

    J’ai développé une application qui utilise Hibernate.

    Ma configuration Hibernate est :
    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
    <?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.dialect">org.hibernate.dialect.OracleDialect</property>
            <property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property>
            <property name="hibernate.connection.url">jdbc:oracle:thin:@10.40.30.8:1521:PXPR</property>
            <property name="current_session_context_class">thread</property>
            <property name="hibernate.show_sql">false</property>
            <property name="hibernate.connection.username">rhuser</property>
            <property name="hibernate.connection.password">base</property>   
     
            <mapping class="db.entites.ReManager"/>
            <mapping class="db.entites.Projets"/>
            <mapping class="db.entites.ReEmp"/>
            <mapping class="db.entites.ReParametres"/>
            <mapping class="db.entites.Taches"/>
            <mapping class="db.entites.EmpProjTach"/>
            <mapping class="db.entites.Activites"/>
            <mapping class="db.entites.ReFavoris"/>
            <mapping class="db.entites.Domaine"/>
            <mapping class="db.entites.Client"/>
            <mapping class="db.entites.Qualites"/>
            <mapping class="db.entites.ReGroupeTravail"/>
        </session-factory>
    </hibernate-configuration>
    Pour supprimer un enregistrement (par exemple un objet Projet) j’utilise la méthode suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public boolean deleteProjet(Projets projet) throws Exception {
            boolean ok = false;
            Session session = HibernateUtil.getSessionFactory().getCurrentSession();
            Transaction transaction = session.beginTransaction();
            session.delete(projet);
            transaction.commit();
            ok = true;
            return ok;
        }
    Bien évidemment s’il existait une contrainte pour la suppression de cet objet j’aurais l’exception org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update

    En mode développement sous NetBeans, je n’ai pas de souci mais lorsque je déploie mon .war sur un serveur Tomcat et en essayant de provoquer l’erreur, le temps de réponse devient énorme (presque 10 à 15 min) comme si l’application tournait à vide ou avait planté.

    Remarque: le serveur Tomcat de production est sur le même réseau que la base et le Tomcat de développement n’est pas sur le même réseau.

    J’utilise la même version de Tomcat en mode dév et prod et aussi pour Java.
    Tomcat : apache-tomcat-6.0.26
    Java : jdk1.6.0_24

    Quelqu'un aurait-il une idée sur l'origine du problème ?
    Si vous avez besoin de plus d’information n’hésiter pas.

    Merci d'avance pour votre aide.

  2. #2
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Pour analyser là, je pense que le mieux serait de regarder les logs. Tu as accès à ceux de prod ? Tu utilises quel framework de log ? Tu as moyen de les mettre en debug pour hibernate et jdbc ?

  3. #3
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 39
    Par défaut
    Bonjour,
    l'instruction qui bloque est :
    voici le log de l'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
    18/12/2012 13:46:09   WARN JDBCExceptionReporter:77 - SQL Error: 2292, SQLState: 23000
    18/12/2012 13:46:09  ERROR JDBCExceptionReporter:78 - ORA-02292: violation de contrainte (RHUSER.RE_FAVORIS_R01) d'intégrité - enregistrement fils existant
    
    18/12/2012 13:50:02   WARN JDBCExceptionReporter:77 - SQL Error: 2292, SQLState: 23000
    18/12/2012 13:50:02  ERROR JDBCExceptionReporter:78 - ORA-02292: violation de contrainte (RHUSER.RE_FAVORIS_R01) d'intégrité - enregistrement fils existant
    
    18/12/2012 13:53:58  ERROR AbstractFlushingEventListener:301 - Could not synchronize database state with session
    org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
    	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)
    	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
    	at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)
    	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:237)
    	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:143)
    	at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
    	at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
    	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
    	at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
    	at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
    	at db.services.DataTransaction.deleteProjet(DataTransaction.java:364)
    	at com.gz.composant.admin.supp.SupprimerProjet$1.buttonClick(SupprimerProjet.java:48)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:597)
    	at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:512)
    	at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:164)
    	at com.vaadin.ui.AbstractComponent.fireEvent(AbstractComponent.java:1219)
    	at com.vaadin.ui.Button.fireClick(Button.java:550)
    	at com.vaadin.ui.Button.changeVariables(Button.java:217)
    	at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.changeVariables(AbstractCommunicationManager.java:1451)
    	at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariableBurst(AbstractCommunicationManager.java:1399)
    	at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1318)
    	at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.doHandleUidlRequest(AbstractCommunicationManager.java:763)
    	at com.vaadin.terminal.gwt.server.CommunicationManager.handleUidlRequest(CommunicationManager.java:296)
    	at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:501)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    	at com.googlecode.psiprobe.Tomcat60AgentValve.invoke(Tomcat60AgentValve.java:30)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    	at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
    	at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
    	at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
    	at java.lang.Thread.run(Thread.java:662)
    Caused by: java.sql.BatchUpdateException: ORA-02292: violation de contrainte (RHUSER.RE_FAVORIS_R01) d'intégrité - enregistrement fils existant
    
    	at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:343)
    	at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10698)
    	at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
    	at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
    	... 38 more
    18/12/2012 13:57:56   INFO SupprimerProjet:53 - >>>>>>>>>>>>> ConstraintViolationException 1
    à chaque fois il y a presque 4 min en tous 12 min pour l'exception, c'est le temps de blocage.
    quelqu'un à une idée de la cause?
    merci pour votre aide.

  4. #4
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 39
    Par défaut
    une remarque:
    en mode de dev c'est la même erreur (ce qui est normal)
    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
    18/12/2012 14:16:23  WARN JDBCExceptionReporter:77 - SQL Error: 2292, SQLState: 23000
    18/12/2012 14:16:23 ERROR JDBCExceptionReporter:78 - ORA-02292: violation de contrainte (RHUSER.RE_FAVORIS_R01) d'intégrité - enregistrement fils existant
    
    18/12/2012 14:16:26  WARN JDBCExceptionReporter:77 - SQL Error: 2292, SQLState: 23000
    18/12/2012 14:16:26 ERROR JDBCExceptionReporter:78 - ORA-02292: violation de contrainte (RHUSER.RE_FAVORIS_R01) d'intégrité - enregistrement fils existant
    
    18/12/2012 14:16:29 ERROR AbstractFlushingEventListener:301 - Could not synchronize database state with session
    org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
    	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)
    	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
    	at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)
    	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:237)
    	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:143)
    	at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
    	at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
    	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
    	at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
    	at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
    	at db.services.DataTransaction.deleteProjet(DataTransaction.java:364)
    	at com.gz.composant.admin.supp.SupprimerProjet$1.buttonClick(SupprimerProjet.java:48)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:597)
    	at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:512)
    	at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:164)
    	at com.vaadin.ui.AbstractComponent.fireEvent(AbstractComponent.java:1219)
    	at com.vaadin.ui.Button.fireClick(Button.java:550)
    	at com.vaadin.ui.Button.changeVariables(Button.java:217)
    	at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.changeVariables(AbstractCommunicationManager.java:1451)
    	at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariableBurst(AbstractCommunicationManager.java:1399)
    	at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1318)
    	at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.doHandleUidlRequest(AbstractCommunicationManager.java:763)
    	at com.vaadin.terminal.gwt.server.CommunicationManager.handleUidlRequest(CommunicationManager.java:296)
    	at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:501)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    	at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
    	at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
    	at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
    	at java.lang.Thread.run(Thread.java:662)
    Caused by: java.sql.BatchUpdateException: ORA-02292: violation de contrainte (RHUSER.RE_FAVORIS_R01) d'intégrité - enregistrement fils existant
    
    	at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:343)
    	at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10698)
    	at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
    	at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
    	... 37 more
    18/12/2012 14:16:31  INFO SupprimerProjet:53 - >>>>>>>>>>>>> ConstraintViolationException 1
    ici l'exception dure quelques secondes seulement.

  5. #5
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Tu as essayé de te connecter à la base de prod avec un client oracle et de passer le SQL à la main pour voir si tu as aussi un délai sur l'erreur ?

  6. #6
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 39
    Par défaut
    Oui, je me connecte sur la base prod avec un client Oracle (depuis mon poste) et le temps de réponse est immédiat.

    En fait, je ne change pas la base, c'est toujours la même (mode dev et prod). Ce qui change c'est le serveur Tomcat pour le déploiement même si c'est la même version de Tomcat et JDK que pour la prod et le dev.

    Sur le serveur de prod je n'ai pas de client Oracle, je ne peux pas faire ce test mais vous m'avez donné une idée, je vais créer une application de test avec laquelle la connexion est gérée par Tomcat (context.xml) et je vais utiliser l'interface de prod (Data Source) pour exécuter le SQL.

  7. #7
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 39
    Par défaut
    J'ai fais le test et le temps de réponse est instantané.

    Je suis bloqué et je ne vois pas pourquoi lorsqu'il s'agit d'une violation de contrainte, l’instruction transaction.commit(); génère l'exception ConstraintViolationException. Cette exception dure plusieurs minutes.

    Une autre remarque : Lorsque la commande ne génère pas d'exception, le temps de réponse est instantané.

    Une idée ?

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

Discussions similaires

  1. Spyware qui bloque le fond d'écran Windows
    Par akli_agha dans le forum Sécurité
    Réponses: 6
    Dernier message: 02/02/2006, 17h16
  2. pc qui bloque et message du BIOS
    Par ouldfella dans le forum Ordinateurs
    Réponses: 4
    Dernier message: 13/10/2005, 14h22
  3. Réponses: 3
    Dernier message: 22/07/2005, 15h16
  4. [MFC] fonction ReadFile qui bloque
    Par r0d dans le forum MFC
    Réponses: 9
    Dernier message: 15/04/2005, 13h21
  5. Réponses: 6
    Dernier message: 21/03/2005, 13h22

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