Connection Mysql : NonRegisteringDriver .
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é :
Code:
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. |
avec un Connection refused STACKTRACE on ne peut plus explicite !:aie:
Voici le code de l'exemple :
Class ServletJdbc :
Code:
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();
}
}
}
}
} |
J'ai mis le descripteur web.xml au niveau de l'application
Code:
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>
... |
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) ..
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 ... :pingoin2:
Merci de votre aide
++