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

Servlets/JSP Java Discussion :

Probleme de connexion servlet-mysql


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Points : 55
    Points
    55
    Par défaut Probleme de connexion servlet-mysql
    Bonjour !

    j'utilise apache-tomcat et j'ai une servlet qui communique avec une base de données mysql.

    Le pilote jdbc de mysql se trouve sous un répertoir que j'ai crée moi même \web-inf\lib

    Tout marche bien, mais le problème c'est que je doit redémarrer le serveur chaque matin. malgré que je ne l'arrête plus.

    chaque matin j'ai le message d'erreur suivant.

    com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operations allowed after connection closed.Connection was implicitly closed due to underlying exception/error:


    ** BEGIN NESTED EXCEPTION **

    com.mysql.jdbc.CommunicationsException
    MESSAGE: Communications link failure due to underlying exception:

    ** BEGIN NESTED EXCEPTION **

    java.net.SocketException
    MESSAGE: Software caused connection abort: recv failed

    STACKTRACE:

    java.net.SocketException: Software caused connection abort: recv failed
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(Unknown Source)
    at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:113)
    at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:160)
    at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:188)
    at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1960)
    at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2375)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2874)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1623)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1715)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:3243)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:3172)
    at com.mysql.jdbc.Statement.executeQuery(Statement.java:1197)
    at call.serveur.doPost(serveur.java:537)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
    at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Unknown Source)

    c'est comme si le serveur ne reconnait olus le pilote de mysql.

    Merci d'avance.

  2. #2
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Il semblerait que la communication avec le serveur durant la nuit est coupee.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operations allowed after connection closed.Connection was implicitly closed due to underlying exception/error:
    c'est ce que semble indique ton message d'erreur, la connexion a ete femee.
    Regarde sur ton serveur n'a pas un timeout.

  3. #3
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Points : 55
    Points
    55
    Par défaut
    [merci

    mais comment configurer le time out

  4. #4
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Je pense que c'est plus au niveau de mysql, que cela se configure.
    Peut etre tu as un log dans mysql ?

    Sinon, pose la question sur le forum Mysql !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    Vous essayez ici de configurer le temps de timeout de mysql et/ou du driver jdbc.
    Pourquoi ?
    Quel est l'intérêt de garder une connexion ouverte durant tant de temps ? Ce n'est pas du tout le comportement classique d'une base de données, et je ne vois pas beaucoup de cas où cela soit utile !
    Si cette connexion "éternelle" n'est pas ce que tu veux, regarde le code dans lequel tu gères ta persistence, il semble que tu utilises toujours la même connexion, au lieu de la refermer après chaque transaction, et d'en ouvrir une autre quand tu as besoin. Ou alors explique-moi en quoi il est nécessaire de garder la même connexion tout au long de l'exécution de ton appli ?

  6. #6
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Points : 55
    Points
    55
    Par défaut
    J'ai modifier mon code de tel sorte que à chaque connexion au servlet une nouvelle connexion avec mysql se produit et a la fin je ferme la connexion

    Le problème que je rencontre c que lorsque je post pour la 2nd fois il est impossible d'etablir la connexion

    voici le code de la méthode DoPost() de ma servlet

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    try{
    Class.forName("com.mysql.jdbc.Driver");
    con = DriverManager.getConnection(
    "jdbc:mysql://localhost:3306/DBName", "root", "admin");
    stmt.executeUpdate(".........");

    con.close();
    }
    catch (SQLException ex1) { System.out.println(ex1);
    }
    catch (ClassNotFoundException ex) {
    }




    }

  7. #7
    Membre actif Avatar de kore62
    Profil pro
    Inscrit en
    Août 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 222
    Points : 205
    Points
    205
    Par défaut
    Moi je fermerai comme ca...

    //On ferme la connexion a la base...

    stmt.close();
    cnx.close();
    L'habitude est l'illusion d'un acquis imaginaire...

    Mes Compos Ziks Electros:http://fishbone2k.free.fr/technorulez/news.php?id=89

  8. #8
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Points : 55
    Points
    55
    Par défaut
    Merci pour votre aide:
    le problème est résolu avec la dernière suggestion;
    il faut tout fermer.

    pour ceux qui veulent une connexion permanante il faut tester l'etat de la connexion
    if(con.isClosed()){réouvrir la connexion}
    mais ce n'est pas une bonne solution .
    il faut ouvrir une session a la demande.
    Merci pour vous tous

Discussions similaires

  1. probleme de connexion a mysql via servlet et jdbc
    Par abdelmajid_daosabah dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 30/10/2008, 20h38
  2. probleme de connexion struts+mysql
    Par stratocasters dans le forum Struts 1
    Réponses: 1
    Dernier message: 07/05/2008, 15h49
  3. probleme de connexion avec mysql
    Par Asmod_D dans le forum JDBC
    Réponses: 8
    Dernier message: 24/06/2007, 23h23
  4. [SGBD] Problème de connexion avec mysql
    Par weshwesh dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 29/06/2006, 10h30
  5. [jdbc] problème de connexion à mysql
    Par ebaynaud dans le forum JDBC
    Réponses: 22
    Dernier message: 20/10/2005, 11h37

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