Mise en commun de connexions Tomcat, connexions inactives et création de connexions

j'ai le problème suivant dans une application web.Quand je quitte le serveur pour une certaine période, par exemple 24 heures mon application cesse de fonctionner. J'utilise tomcat 7 et Connection pooling.Ma base de données est MySQL.

j'obtiens l'exception suivante:

  Communication link failure: java.io.EOFException, underlying cause: null ** BEGIN NESTED EXCEPTION ** java.io.EOFException STACKTRACE: java.io.EOFException at 
com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1394) at 
com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:1538) at 
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1929) at 
com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1167) at 
com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1278) at 
com.mysql.jdbc.Connection.execSQL(Connection.java:2251) at 
com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1586) at 
org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStat
ement.java:96) at 
org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStat
ement.java:96) at configuration.Login.doPost(Login.java:104) at 
javax.servlet.http.HttpServlet.service(HttpServlet.java:641) at 
javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.jav
a:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) at
 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164) at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at 
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563) at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:403) at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:301) at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java
:162) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java
:140) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at 
java.lang.Thread.run(Thread.java:662) ** END NESTED EXCEPTION **

je découvre que cette erreur s'est produite lorsque les connexions groupées pour une raison quelconque après une certaine période de temps ont été fermées peut-être en raison de la limite de temps ou quelque chose. Ma question Est cette piscine de connexion n'aurait pas dû créer de nouvelles connexions quand il n'y a pas de connexion dans la piscine ?L'erreur n'est pas causée par la circulation parce que personne n'utilise l'application pour le moment.Comment puis-je corriger cette erreur ?Lorsque l'application est déployée, je commence à utiliser l'application,des connexions mises en commun sont créées.Ces connexions sont inactives?Est-il possible que ces connexions ne sera pas fermé?Mais si je peux le faire, est-ce que je ne gâche pas les connexions d'autres applications sur le serveur?

aussi si je continuez à essayer d'utiliser l'application après un certain temps de nouvelles connexions sont créées et l'application commence à fonctionner.Mais ce n'est pas normal.......

//Edit si j'ai la main fermer toutes les connexions actives à partir de MYSQL Admin cette erreur apparaît de nouveau.

0
demandé sur nikosdi 2011-09-09 13:39:57

1 réponses

il y a des connexions de fond.

Comment définissez-vous votre piscine?

Voici quelques options utiles.

minEvictableIdleTimeMillis="60000"maxActive="100" minIdle="10" maxIdle="50" maxWait="10000"
    removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"

et ajouter dans l'url le autoReconnect=true

url="jdbc:mysql://localhost:3306/db?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8" />
1
répondu ssedano 2011-09-09 10:12:22