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

JDBC Java Discussion :

[JDBC / Oracle] Perte de session durant un traitement batch


Sujet :

JDBC Java

  1. #1
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 151
    Points : 85
    Points
    85
    Par défaut [JDBC / Oracle] Perte de session durant un traitement batch
    Bonjour,

    Je suis en train de faire des tests sur un traitement batch que je viens de développer, et je rencontre un problème avec ma connexion à la base Oracle 10g.

    Au bout d'un temps x (très variable), en plein milieu de mon traitement (qui fait sans cesse des requêtes select & update) j'ai l'erreur suivante lorsque je cherche à récupérer la session :

    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
     
    2011-09-12 14:48:26,750 [main] ERROR com.teamlog.core.utils.HibernateUtil  - La récupération de la session a échouée.
    com.teamlog.core.exception.DataAccessException: java.sql.SQLException: Connexion interrompue
    	at com.teamlog.core.utils.SchemaManager.getSchemaOnConnection(SchemaManager.java:110)
    	at com.teamlog.core.utils.HibernateUtil.getSession(HibernateUtil.java:141)
    	at ccomptes.sami.comptes.persistence.dao.CompteDao.recupererCompteParSiretOrganismeEtExercice(CompteDao.java:465)
    	at ccomptes.sami.batch.ImpXemInputReader.majCompte(ImpXemInputReader.java:387)
    	at ccomptes.sami.batch.ImpXemInputReader.readLine(ImpXemInputReader.java:346)
    	at ccomptes.sami.batch.ImpXemInputReader.readInputFiles(ImpXemInputReader.java:221)
    	at ccomptes.sami.batch.mainBatchImportXemelios.main(mainBatchImportXemelios.java:24)
    Caused by: java.sql.SQLException: Connexion interrompue
    	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
    	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
    	at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:840)
    	at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:759)
    	at org.apache.commons.dbcp.DelegatingConnection.prepareStatement(DelegatingConnection.java:281)
    	at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.prepareStatement(PoolingDataSource.java:313)
    	at com.teamlog.core.utils.SchemaManager.getSchemaOnConnection(SchemaManager.java:100)
    	... 6 more
    Naturellement, la session n'est pas close dans mon code, et la transaction n'est pas terminé non plus.
    J'ai de plus le système de validation des sessions définit :

    hibernate.dbcp.validationQuery select 1 from dual

    D'ailleurs les traces peuvent légèrement varié en fonction de l'endroit ou ça plante. Bref, vraiment aléatoire.

    D'après les recherches que j'ai effectué, ça pourrait être un problème au niveau du pool de connexion.
    Mais bon, je n'utilise qu'une seul session et il n'y a pas de moment d'inactivité (je lis un fichier plat pour mettre à jours des données).

    J'ai mis à jour certaines librairies qui dataient un peu (l'application est assez vieille, tourne sur une JVM 1.4.2) dans l'espoir d'amélioration, mais ça ne suffit pas.
    J'ai donc maintenant :
    commons-dbcp.1.3 ,
    commons-collections.3.2.1 ,
    commons-pool.1.5.6
    ainsi que le driver Oracle ojbc14.

    J'utilise aussi un Hibernate (vieillot) : 2.1.8
    Je le mettrais bien a jour mais cela pourrait avoir des impacts.

    J'ai tenté de faire un commit / ligne lu, pour éliminer des pistes, et j'ai la même erreur.

    Bref, j'ai l'impression que ça ne tient pas la charge.

    Je n'ai plus vraiment de piste pour résoudre mon problème...

    Quelqu'un a une idée ?

  2. #2
    Expert éminent sénior
    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 : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Voir avec le DBA ou faire un sniff de la connexion avec wireshark pour savoir quels sont les derniers messages du serveur oracle. C'est probablement lui qui gobe pas un truc et t'éjecte.

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/09/2009, 18h32
  2. [ORACLE 9i] Trace session
    Par sygale dans le forum Administration
    Réponses: 3
    Dernier message: 20/03/2008, 07h10
  3. [JSP][session] perte de session et sendRedirect
    Par blaz dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 30/03/2007, 09h32
  4. [JDBC] [Oracle] Erreur : End of TNS data channel
    Par loicmillion dans le forum JDBC
    Réponses: 2
    Dernier message: 01/02/2005, 14h27
  5. [JDBC][servlet] Perte de la BdD au déploiement
    Par Twofy dans le forum JBuilder
    Réponses: 1
    Dernier message: 06/09/2004, 11h09

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