Bon le probleme est simple avant j'utilisais un Driver Manager pour me connecter à ma base MySQL et donc au bout de 8 heures la connexion se fermait (timeout du Driver Manager).
Donc j'ai mis en place un pool de connexion (dbcp) que j'ai configuré à partir de l'interface Admin Tool de Tomcat :
Mais le problème continu à moitié :-) ...
En fait après 8 heures de connexion l' AutoReconnect se fait mais pas du premier coup il faut que je lance l'application 2/3 fois pour que l'autoReconnect passe, avant ca il me claque une exception(la meme que lorsque j'utilisais le Driver Manager).Et donc allez expliquer aux utilisateurs qu'il faut lancer l'appli 2/3 fois avant pour qu'elle fonctionne...
JNDI Name: jdbc/GST
Data Source URL: jdbc:mysql://localhost:3306/db_support?autoReconnect=true
JDBC Driver Class: org.gjt.mm.mysql.Driver
User Name: root
Password: ****
server.xml : (je fais pointer le contexte(SGST-0.2) sur le DataSource créé)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <Context path="/SGST-0.2" reloadable="true"> <ResourceLink global="jdbc/GST" name="jdbc/GST" type="javax.sql.DataSource" /> </Context></Host>
methode init() :
Exception :
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 public void init() throws ServletException{ try { //récupération de la source de donnée Context initCtx = new InitialContext(); ds = (DataSource) initCtx.lookup("java:comp/env/jdbc/GST"); } catch (Exception e) { throw new RuntimeGSTException( "ERREUR - chargement data source. \n" + e); } try { con = ds.getConnection(); conDotproject = ds.getConnection(); init = true; } catch (SQLException e) { throw new RuntimeGSTException( "ERREUR - recuperation connexion. \n" + e); } }
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 exception servletGST.domaine.RuntimeGSTException: java.sql.SQLException: Communication link failure: java.net.SocketException, underlying cause: Software caused connection abort: recv failed ** 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.MysqlIO.readFully(MysqlIO.java:1392) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:1539) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1930) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1168) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1279) at com.mysql.jdbc.MysqlIO.sqlQuery(MysqlIO.java:1225) at com.mysql.jdbc.Connection.execSQL(Connection.java:2278) at com.mysql.jdbc.Connection.execSQL(Connection.java:2225) at com.mysql.jdbc.Statement.executeQuery(Statement.java:1163) at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:205) at servletGST.mapping.PersistanceManagerDB.findCompanyById(PersistanceManagerDB.java:577) at servletGST.mapping.PersistanceManagerDB.makeUtilisateur(PersistanceManagerDB.java:1438) at servletGST.mapping.PersistanceManagerDB.findUtilisateurByLogin(PersistanceManagerDB.java:1160) at servletGST.web.ServletGST.doPost(ServletGST.java:68) 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:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Unknown Source) ** END NESTED EXCEPTION ** servletGST.mapping.PersistanceManagerDB.findCompanyById(PersistanceManagerDB.java:585) servletGST.mapping.PersistanceManagerDB.makeUtilisateur(PersistanceManagerDB.java:1438) servletGST.mapping.PersistanceManagerDB.findUtilisateurByLogin(PersistanceManagerDB.java:1160) servletGST.web.ServletGST.doPost(ServletGST.java:68) javax.servlet.http.HttpServlet.service(HttpServlet.java:709) javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
Partager