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

Hibernate Java Discussion :

Mauvais indicateur de connection


Sujet :

Hibernate Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 31
    Points : 14
    Points
    14
    Par défaut Mauvais indicateur de connection
    Bonjour ,
    j'ai un probleme avec hibernate.. J'ai un formulaire de connexion a ma base de donnée(nom d'utilisateur et mot de passe) lorsque je rentre le bon mot de passe et le bon login pas de pb je me connecte tranquilement. Mais qd je met le mauvais mot de passe une exception Sql est generee normal.Mais mon probleme est qu je n'arrive plus a changer mes param de connexion je ferme pourtant bien ma session apres avoir recu l'exception en essayant de creer une nouvelle session avec les bons parametres y a pas moyen il me garde les anciens pourtant j'arrive a suivre la valeur des param de cfg au moyen du jbuilder et mes changemnets semblent bien pris en compte....si qqu un a une idée je le remercie d'avance....

    ps : je passe mes parametre de connection au moyen de l'instruction setConfiguration(net.hibernate.cfg.Configuration)

  2. #2
    Candidat au Club
    Inscrit en
    Mai 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    tu fais koi au niveau de la SessionFactory ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Configuration cfg = new Configuration(...);
    SessionFactory sf = cfg.buildSessionFactory();
    ou bien autre chose ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    c'est exactement ce que je fait....

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    personne n'a d idee??
    pourtant ca me parait essentiel ...comment vous faites vous pour verifier que l utilisateur a entrer le bon mot de passe pour de connecter a la base de donnée???
    :

  5. #5
    Membre expérimenté
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 1 407
    Points
    1 407
    Par défaut
    une "Configuration" ca fonctionne comme un Bundle, c static et c un "Field" de la JVM (c chargé une fois pour toute), donc il faut l'unloader à la main et le recharger c le seul moyen.

    @+

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    merci pour ta reponse random....
    mais la ca m'arrange pas du tout...
    Si j'ai bien compris je suis donc obliger de relancer la jvm a chaque fois que je veux changer un param de connexion...la c la galere il n'y a aucun moyen de faire ca plus proprement??

  7. #7
    Membre expérimenté
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 1 407
    Points
    1 407
    Par défaut
    effectivement si t params sont dans un fichier de conf, c le seul moyen.

    i lfaut bien comprendre que ce mécanisme est là pour des raisons de performance, car si on devait lire le fichier à chaque connexion, ce serait couteux.

    Néamoins tu doit pouvoir le faire programatiquement , et donc te passer du fichier.

    un objet Configuration peut aussi se construire "à la main" duirectement dans le code, sans lui passer de fichier, et en y renseignant les infos une à une.

    Je te laisse te refferer à la doc d'hibernate pour ca.

    Si tu as des problemes, n'hésites pas à reposter ici.

    @+

    Lionel

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    ok y a eu malentendu je commence un peu a respirer ....
    je ne passe pas par un fichier conf.
    J'utilise d'ores et deja les instructions de "remplissage" de configuration (setConfiguration etc...)
    ca marche lors de la premiere initialisation mais en supposant que je mette un mauvais mot de passe hibernate va m'envoyer un message mais je ne vois pas comment l'intercepter.
    je cree donc une requete toute simple elle, elle me genere une exception que j'intercepte. A partir de la je ferme ma connnection, je cree une nouvelle configuration avec le nouveau mot de passe, je cree une nouvelle fabrique a partir de cette configuration et j'ouvre une nouvelle session. Là, hib me recharge les fichiers de mapping pas de pb mais par contre il prend pas en charge mon nouveau mot de passe. Je comprend pas..

  9. #9
    Membre expérimenté
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 1 407
    Points
    1 407
    Par défaut
    L'esception doit alors etre une ConnectionException ... une exception JDBC je pense...

    Fais un try/catch global sur Exception, et affiche l'exception pour en connaitre le type exact.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    cad que je fait deja une interception de toute les exception et y aquand meme pas moyen de la capturer autrement qu en faisant une requete qui ne marche pas....
    voila le texte qu me renvoi hibernate

    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
    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]Échec de la connexion de l'utilisateur 'saz'.
    	at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
    	at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
    	at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
    	at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
    	at com.microsoft.jdbc.sqlserver.tds.TDSLoginRequest.processReplyToken(Unknown Source)
    	at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
    	at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
    	at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
    	at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
    	at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
    	at java.sql.DriverManager.getConnection(DriverManager.java:512)
    	at java.sql.DriverManager.getConnection(DriverManager.java:140)
    	at net.sf.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:93)
    	at net.sf.hibernate.impl.SessionFactoryImpl.<init>&#40;SessionFactoryImpl.java&#58;167&#41;
    	at net.sf.hibernate.cfg.Configuration.buildSessionFactory&#40;Configuration.java&#58;627&#41;
    	at Sing.SinHbmConnection.getSessionFact&#40;SinHbmConnection.java&#58;60&#41;
    	at Sing.SinHbmConnection.currentSession&#40;SinHbmConnection.java&#58;88&#41;
    	at Spal.loginOK&#40;Spal.java&#58;90&#41;
    	at Spal$2.boutonValid&#40;Spal.java&#58;41&#41;
    	at GUI_Default.ValidCancelGUI.fireValidEvent&#40;ValidCancelGUI.java&#58;67&#41;
    	at login.interlogHBM.validAction&#40;interLogHBM.java&#58;57&#41;
    	at GUI_Default.ValidAdapter.actionPerformed&#40;ValidCancelGUI.java&#58;79&#41;
    	at javax.swing.AbstractButton.fireActionPerformed&#40;AbstractButton.java&#58;1764&#41;
    	at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed&#40;AbstractButton.java&#58;1817&#41;
    	at javax.swing.DefaultButtonModel.fireActionPerformed&#40;DefaultButtonModel.java&#58;419&#41;
    	at javax.swing.DefaultButtonModel.setPressed&#40;DefaultButtonModel.java&#58;257&#41;
    	at javax.swing.plaf.basic.BasicButtonListener$ReleasedAction.actionPerformed&#40;BasicButtonListener.java&#58;301&#41;
    	at javax.swing.SwingUtilities.notifyAction&#40;SwingUtilities.java&#58;1512&#41;
    	at javax.swing.JComponent.processKeyBinding&#40;JComponent.java&#58;2435&#41;
    	at javax.swing.JComponent.processKeyBindings&#40;JComponent.java&#58;2470&#41;
    	at javax.swing.JComponent.processKeyEvent&#40;JComponent.java&#58;2398&#41;
    	at java.awt.Component.processEvent&#40;Component.java&#58;4902&#41;
    	at java.awt.Container.processEvent&#40;Container.java&#58;1566&#41;
    	at java.awt.Component.dispatchEventImpl&#40;Component.java&#58;3598&#41;
    	at java.awt.Container.dispatchEventImpl&#40;Container.java&#58;1623&#41;
    	at java.awt.Component.dispatchEvent&#40;Component.java&#58;3439&#41;
    	at java.awt.KeyboardFocusManager.redispatchEvent&#40;KeyboardFocusManager.java&#58;1688&#41;
    	at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent&#40;DefaultKeyboardFocusManager.java&#58;593&#41;
    	at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent&#40;DefaultKeyboardFocusManager.java&#58;765&#41;
    	at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions&#40;DefaultKeyboardFocusManager.java&#58;698&#41;
    	at java.awt.DefaultKeyboardFocusManager.dispatchEvent&#40;DefaultKeyboardFocusManager.java&#58;559&#41;
    	at java.awt.Component.dispatchEventImpl&#40;Component.java&#58;3468&#41;
    	at java.awt.Container.dispatchEventImpl&#40;Container.java&#58;1623&#41;
    	at java.awt.Window.dispatchEventImpl&#40;Window.java&#58;1585&#41;
    	at java.awt.Component.dispatchEvent&#40;Component.java&#58;3439&#41;
    	at java.awt.EventQueue.dispatchEvent&#40;EventQueue.java&#58;450&#41;
    	at java.awt.EventDispatchThread.pumpOneEventForHierarchy&#40;EventDispatchThread.java&#58;197&#41;
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy&#40;EventDispatchThread.java&#58;150&#41;
    	at java.awt.EventDispatchThread.pumpEvents&#40;EventDispatchThread.java&#58;144&#41;
    	at java.awt.EventDispatchThread.pumpEvents&#40;EventDispatchThread.java&#58;136&#41;
    	at java.awt.EventDispatchThread.run&#40;EventDispatchThread.java&#58;99&#41;
    normalement des qu g ce texte je devrai partir dans le catch ben la non donc je fait une requet sur la base qui me renvoie l'exception (normal) sui vante (celle la je reussi a la capturer).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    net.sf.hibernate.JDBCException&#58; Cannot open connection&#58; &#91;Microsoft&#93;&#91;SQLServer 2000 Driver for JDBC&#93;&#91;SQLServer&#93;Échec de la connexion de l'utilisateur 'saz'.

  11. #11
    Membre expérimenté
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 1 407
    Points
    1 407
    Par défaut
    fais voir comment tu fais ton t./c, un bout de code significatif stp.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    la ca va vraiment pas etre evident je m'excusse, ca va peut etre prendre un peu de temp je vais essayer de faire un truc qui soit clair

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    bon alors, je recois ma configuration de l'objet logwin. c dans cette fenetre que sont modifie les donnes mot de passe et nom d'utilisateur de plus c en validant qu on initialise l'url de la base de données + le pilote jdbc.
    donc voila ma fonction qui va initialiser ma session
    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
    try&#123;
            /*SinHbConection est un objet construit a l'aide du design pattern singleton*/
         connection = SinHbmConnection.getInstance&#40;&#41;;
         this.connection.setConfiguration&#40;logWin.getCfg&#40;&#41;&#41;;
         this.connection.getConfiguration&#40;&#41;
             .addClass&#40;hibernate.hbm.Tcli.class&#41;
             .addClass&#40;hibernate.hbm.Tprjint.class&#41;
             .addClass&#40;hibernate.hbm.Tprjintfou.class&#41;
             .addClass&#40;hibernate.hbm.Tdla.class&#41;;
              connection.currentSession&#40;&#41;;
               new Tlogin&#40;&#41;.selectAll&#40;&#41;;
               logSpal.setVisible&#40;true&#41;;
       &#125;catch&#40;Exception x&#41;&#123;
         System.out.println&#40;x&#41;;
    // permet de remettre a null l'instance du singleton pour raz
         SinHbmConnection.resetConnection&#40;&#41;;
       &#125;
    Je suis conscient que sans le code du Singleton on va pas bien loin voici donc le code complet de l'objet
    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
    public class SinHbmConnection &#123;
      static SinHbmConnection instance=null;
     
      Configuration cfg;
     public static SessionFactory sessionFact ;
     
    public static final ThreadLocal session = new ThreadLocal&#40;&#41;;
     
     
      /**
       * Creates a new SinHbmConnection object.
       */
      private SinHbmConnection&#40;&#41; &#123;
      &#125;
     
      /**
       *
       *
       * @return de la configuration
       */
     
      public Configuration getConfiguration&#40;&#41; &#123;
        return getInstance&#40;&#41;.cfg;
      &#125;
     
      /**
       *
       *
       * @set de la configuration
       */
      public void setConfiguration&#40;Configuration cfg&#41; &#123;
        getInstance&#40;&#41;.cfg = cfg;
     
      &#125;
      /**
       *
       *
       * @recupere une session factory
       */
      public SessionFactory getSessionFact&#40;&#41; throws Exception &#123;
      if&#40;getInstance&#40;&#41;.sessionFact==null &#41;&#123;
         getInstance&#40;&#41;.sessionFact = getInstance&#40;&#41;.cfg.buildSessionFactory&#40;&#41;;
     
      &#125;
      return getInstance&#40;&#41;.sessionFact ;
      &#125;
     
     
     
      /**
       *
       *
       * @permet de donner une session factory
       */
     
      public void setSessions&#40;SessionFactory sessions&#41; &#123;
        getInstance&#40;&#41;.sessionFact = sessionFact;
      &#125;
    // recupere la session courante
      public Session currentSession&#40;&#41;throws Exception&#123;
        Session s = &#40;Session&#41; getInstance&#40;&#41;.session.get&#40;&#41;;
     
                       s = getInstance&#40;&#41;.getSessionFact&#40;&#41;.openSession&#40;&#41;;
                       session.set&#40;s&#41;;
     
                    return s;
     
      &#125;
      /**
       *
       *
       * creation d'une instance unique &#40;principe du singleton&#41;
       */
      public static synchronized SinHbmConnection getInstance&#40;&#41; &#123;
        if &#40;instance == null&#41; &#123;
          instance = new SinHbmConnection&#40;&#41;;
        &#125;
        return instance;
      &#125;
    /* remise a zero de l'instance comme ca lors du get instance on est sur d'avoir une nouvelle instance avec une nouvelle session factory et une nouvelle session*/
      public static synchronized void resetConnection&#40;&#41;&#123;
        instance = null;
      &#125;
    &#125;
    Voila j'espere qu g etais clair et je te remercie beaucoup RanDom pour le temp que tu m'accordes

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    ps: le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new Tlogin&#40;&#41;.selectAll&#40;&#41;;
    est le code me permettant de faire une requete dans ma base.

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    dsl je suis trop bet les variables static final ca me tuera
    je suis vraiment dsl
    excuses moi encore RanDom

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    en tout cas merci beaucoup

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

Discussions similaires

  1. indicateur de connection internet
    Par SpaceFrog dans le forum SUSE
    Réponses: 5
    Dernier message: 21/03/2007, 15h57
  2. couper une connection avec un serveur corba
    Par pons dans le forum CORBA
    Réponses: 3
    Dernier message: 31/05/2002, 11h11
  3. Réponses: 2
    Dernier message: 30/05/2002, 09h54
  4. Réponses: 3
    Dernier message: 22/05/2002, 10h37
  5. [Kylix] Pb connection à Mysql
    Par Anonymous dans le forum EDI
    Réponses: 3
    Dernier message: 25/04/2002, 16h26

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