Connexion Posgres instable ?
Bonjour,
Je me heurte à un problème qui se pointe... Plus ou moins lorsqu'il le souhaite !
Enfin pour être franche, ça passe deux fois sur huit, les deux premières fois...
De quoi ? La connexion ( je pense ) à ma base de données.
J'essaie de faire la partie " Log in " du site.
Cependant, alors que je logue mon user :
Code:
1 2 3 4 5
|
User user = new User();
user.setIdentifiantUSER(request.getParameter("userName"));
user.setPasswordUSER(request.getParameter("password"));
user = UserDAO.login(user); |
Ce qui va chercher ma fonction login
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
|
public static User login(User bean) {
//preparing some objects for connection
Statement stmt = null;
String username = bean.getIdentifiantUSER();
String password = bean.getPasswordUSER();
String searchQuery = "" +
" SELECT \"User\".iduser, \"User\".identifiantuser, \"User\".passworduser, \"User\".emailuser, \"User\".scoreuser, \"User\".isconnecteduser, \"User\".isadminuser, \"User\".isdeletedaccountuser " +
" FROM \"User\"" +
" WHERE \"User\".identifiantuser='" + username + "'" +
" AND \"User\".passworduser='" + password + "';";
try { //connect to DB
currentCon = ConnexionPostgreSQL.getInstance();
stmt = currentCon.createStatement();
rs = stmt.executeQuery(searchQuery);
boolean more = rs.next();
// if user does not exist set the isValid variable to false
if (!more) {
System.out.println("Désolé, vous n'êtes pas un utilisateur enregistré! Veuillez vous enregistrer avant de vous loguer.");
bean.setValid(false);
}
//if user exists set the isValid variable to true
else if (more) {
String emailUser = rs.getString("emailuser");
int scoreUser = rs.getInt("scoreuser");
System.out.println("Bienvenue " + username);
bean.setEmailUSER(emailUser);
bean.setScoreUSER(scoreUser);
bean.setValid(true);
}
} catch (Exception ex) {
System.out.println("Connexion échouée. Une exception a été levée ! ");
ex.printStackTrace();
}
//some exception handling
finally {
if (rs != null) {
try {
rs.close();
}
catch (Exception e) {}
rs = null;
}
if (stmt != null) {
try {
stmt.close();
} catch (Exception e) {}
stmt = null;
}
if (currentCon != null) {
try {
currentCon.close();
}
catch (Exception e) { }
currentCon = null;
}
}
return bean;
} |
J'ai tout d'abord le droit à un
Donc il est correctement passé dans le elseif, le User est valide.
Si je relance la fonction ensuite...
Citation:
Connexion échouée. Une exception a été levée !
org.postgresql.util.PSQLException: Une erreur d'entrée/sortie a eu lieu lors d'envoi vers le serveur.
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:283)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:353)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:252)
at fr.jabic.dao.concret.UserDAO.login(UserDAO.java:30)
at fr.jabic.LoginServlet.doGet(LoginServlet.java:55)
at fr.jabic.LoginServlet.doPost(LoginServlet.java:80)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.io.IOException: Stream closed
at sun.nio.cs.StreamEncoder.ensureOpen(StreamEncoder.java:26)
at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:121)
at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:212)
at org.postgresql.core.PGStream.flush(PGStream.java:507)
at org.postgresql.core.v3.QueryExecutorImpl.sendSync(QueryExecutorImpl.java:1107)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:256)
... 20 more
Ca fait mal...
Pourtant, ma connexion est fermée lorsque j'ai fini de loguer mon User, et elle est réouverte quand je souhaite le " re loguer "
Une idée concernant l'origine du problème ?