bonsoir à tous ...
Voici un probléme que j'essaie de resoudre depuis quequesssss jours :
Me connecter à une base de données Mysql Avec une servlet.
En fait il (me) semble que la connection est refusée ( je suis débutant ) .
Voici le message d'erreur retourné :
avec un Connection refused STACKTRACE on ne peut plus explicite !
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 Communications link failure due to underlying exception: ** BEGIN NESTED EXCEPTION ** java.net.SocketException MESSAGE: java.net.ConnectException: Connection refused STACKTRACE: java.net.SocketException: java.net.ConnectException: Connection refused at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156) at com.mysql.jdbc.MysqlIO.(MysqlIO.java:276) at com.mysql.jdbc.Connection.createNewIO(Connection.java:2666) at com.mysql.jdbc.Connection.(Connection.java:1531) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266) at java.sql.DriverManager.getConnection(DriverManager.java:525) at java.sql.DriverManager.getConnection(DriverManager.java:171) at org.kzone.ServletJdbc.doGet(ServletJdbc.java:34) at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) 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:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) 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(Thread.java:595) ** END NESTED EXCEPTION ** Last packet sent to the server was 61 ms ago.![]()
Voici le code de l'exemple :
Class ServletJdbc :
J'ai mis le descripteur web.xml au niveau de l'application
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99 package org.kzone; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; public class ServletJdbc extends HttpServlet { protected void doGet (HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { // 'ouverture ' de l'écrivain PrintWriter out = response.getWriter(); // précision du format de sortie response.setContentType("text/html"); // récupération des paramètre du formulaire final String nom = request.getParameter("nom"); final String prenom = request.getParameter("prenom"); final String telephone = request.getParameter("telephone"); // instances de connection Connection connection = null; ResultSet result = null; Statement statement = null; // partie connection a la base try { // connection à la base Class.forName("com.mysql.jdbc.Driver"); // obtention d'un connection String url = "jdbc:mysql://localhost/bdtest"; connection = DriverManager.getConnection(url, "kzone", "drikilzon"); statement = connection.createStatement(); // insertion de valeur à la base String requete = "INSERT INTO personne" + "(nom,prenom,telephone)" + "VALUES ('"+ nom + "','" + prenom + "'," + "'" + telephone +"')"; statement.executeUpdate(requete); // afficher le contenu de la base de données result = statement.executeQuery("select * from personne"); // reécuperation dans un tableau while(result.next()); { int idPersonneBd = result.getInt("idPersonne"); String nomBd = result.getString("nom"); String prenomBd = result.getString("prenom"); String telephoneBd = result.getString("telephone"); // affichage des resultats out.println(prenomBd + " " + nomBd + " " + telephoneBd); } } catch (ClassNotFoundException e) { out.println(e.getMessage()); } catch (SQLException e) { // TODO Auto-generated catch block out.println(e.getMessage()); } //instruction exécutée dans tous les cas finally { // fermeture statement // si ouvert .. on ferme if (statement != null) // peut provoquer une exception { try { statement.close(); } catch (SQLException e1) { e1.printStackTrace(); } } // fermeture result if (result != null) { try { result.close(); } catch (SQLException e1) { e1.printStackTrace(); } } // fermeture connection if (connection != null) { try { connection.close(); } catch (SQLException e1) { e1.printStackTrace(); } } } } }
et j'ai testé cette application en mettant le fichier jar mysql-connector-java-5.0.4-bin aussi bien dans le répertoire commun ( common/lib) que celui de mon application (WEB-INF/lib) ..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 .... <!-- description application servletJdbc --> <servlet> <servlet-name>ServletJdbc</servlet-name> <servlet-class>org.kzone.ServletJdbc</servlet-class> </servlet> <servlet-mapping> <servlet-name>ServletJdbc</servlet-name> <url-pattern>/formulaire1</url-pattern> </servlet-mapping> ...
J'ai également ajouté ce fichier dans le javaBuildPath emon projet (sous Eclipse) , mais c'est une approche empirique qui ne me satisfait pas beaucoup .. surtout lorsque cela ne marche pas ...![]()
Merci de votre aide
++
Partager