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 Java : Sélectionner tout - Visualiser dans une fenêtre à part
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 Java : 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
 
	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

Bienvenue root
Donc il est correctement passé dans le elseif, le User est valide.

Si je relance la fonction ensuite...

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 ?