IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Connexion Posgres instable ?


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut 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 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 ?
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Peux-tu montrer le code de ConnexionPostgreSQL.getInstance() ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Oui.
    Cependant, puisqu'il comporte lui même un try;catch non relevé, je pense qu'il n'y a pas de problème à ce niveau

    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
     
    package fr.jabic.jdbc;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
     
    public class ConnexionPostgreSQL{
     
    	/**
    	 * URL de connection
    	 */
    	private static String url = "jdbc:postgresql://localhost:5432/maBdD";
    	/**
    	 * Nom du user
    	 */
    	private static String user = "monUser";
    	/**
    	 * Mot de passe du user
    	 */
    	private static String passwd = "admin";
    	/**
    	 * Objet Connection
    	 */
    	private static Connection connect;
     
    	/**
    	 * Méthode qui va nous retourner notre instance
    	 * et la créer si elle n'existe pas...
    	 * @return
    	 */
    	public static Connection getInstance(){
    		if(connect == null){
    			try {
    				Class.forName("org.postgresql.Driver");
    			} catch (ClassNotFoundException e) {
    				System.out.println("Driver not found");
    				e.printStackTrace();
    			}
    			try {
    				connect = DriverManager.getConnection(url, user, passwd);
    			} catch (SQLException e) {
    				System.out.println("Echec connexion via le driver :");
    				e.printStackTrace();
    			}
    		}
    		return connect;	
    	}	
    }
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    La méthode n'est pas la bonne, tu utilises un singleton pour la connexion.

    1- tu demandes une connexion, tu créés l'objet Connection
    2- tu utilises la connexion
    3- tu fermes la connexion (dont l'adresse est la même que dans la classe ConnexionPostgerSQL)
    4- tu redemandes une connexion, l'objet n'est pas null mais la connexion est fermée (étape 3)
    5- début des problèmes

    Il faut faire comme ceci
    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
     
    package fr.jabic.jdbc;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
     
    public class ConnexionPostgreSQL
    {
        /**
         * URL de connection
         */
        private static String url = "jdbc:postgresql://localhost:5432/maBdD";
        /**
         * Nom du user
         */
        private static String user = "monUser";
        /**
         * Mot de passe du user
         */
        private static String passwd = "admin";
     
        /**
         * Méthode qui va nous retourner une connexion
         * @return
         */
        public static Connection getInstance()
        {
            Connection connect = null;
            try 
            {
                Class.forName("org.postgresql.Driver");
                connect = DriverManager.getConnection(url, user, passwd);
            } 
            catch (SQLException e) 
            {
                connect = null;
                System.out.println("Echec connexion via le driver :");
                e.printStackTrace();
            }
            return connect;    
        }    
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Omagad...

    Merci beaucoup.
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Heyoffline.js : avertir les utilisateurs quand la connexion est instable
    Par FirePrawn dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 26/03/2013, 11h19
  2. Connexion instable : Debian + Vmware Server
    Par fredob dans le forum VMware
    Réponses: 0
    Dernier message: 29/11/2009, 18h14
  3. [WS 2003] connexion Wi-Fi instable
    Par Jean-Claude Dusse dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 04/11/2009, 15h12
  4. Wifi : connexion instable
    Par LoDev dans le forum Hardware
    Réponses: 2
    Dernier message: 29/08/2008, 17h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo