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

API standards et tierces Java Discussion :

[Débutante][LDAP] utilisation de la classe Properties


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de xxaragornxx
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Par défaut
    Ha sorry, je n'avais relu ton run.bat:

    -DDir.properties="ch.esnig.ldap.Dir.properties"
    Ca, ça ne va pas !

    Il faut donner le chemin complet avec des "/ " !

    -DDir.properties="/ch/esnig/ldap/Dir.properties"
    Le top étant de mettre le chemin depuis la racine (/home sous Linux ou un C:/ sous windows) pour éviter les pbs de chemin relatif.

  2. #2
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 157
    Par défaut
    No problem et merci.

    Bon j'ai modifié mon bat et j'ai rajouté -uid="geiersberger" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java -classpath ./classes ch.esnig.ldap.ClientLDAPUI -DDir.properties="./src/ch/esnig/ldap/Dir.properties" -url="ldap://localhost:389" -authentication="simple" -uid="geiersberger" -credentials="essai999"
    mais j'ai toujours le même message d'erreur.
    Argggg...

  3. #3
    Membre expérimenté Avatar de xxaragornxx
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Par défaut
    la syntaxe pour passer une propriété à ton lanceur java est la suivante:
    -Dproperty=value
    Donc il faut que tu fasses la même chose pour url, credentials, etc
    Et sans les "" !
    Et sans le "." dans ton chemin ./src/ !

  4. #4
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 157
    Par défaut
    J'aurais dû y penser

    Euh, je sais que j'abuse , mais je me lance quand même.
    Est-ce que la syntaxe est correcte si je la fais de la manière suivante ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    -D-credentials="essai999"
    -credentials étant la property et "essai999" étant value.

  5. #5
    Membre expérimenté Avatar de xxaragornxx
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Par défaut
    Citation Envoyé par sangei
    J'aurais dû y penser

    Euh, je sais que j'abuse , mais je me lance quand même.
    Est-ce que la syntaxe est correcte si je la fais de la manière suivante ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    -D-credentials="essai999"
    -credentials étant la property et "essai999" étant value.
    Je ne jamais pensé à essayer !
    J'aurais tendance à penser que ça passe avec le -, mais je ne garantis rien. Là il faut que tu testes...

  6. #6
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 157
    Par défaut
    Autre question, comment est-ce que je peux vérifier qu'il "charge" bien mon fichier Dir.properties ?

  7. #7
    Membre expérimenté Avatar de xxaragornxx
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Par défaut
    Citation Envoyé par sangei
    Autre question, comment est-ce que je peux vérifier qu'il "charge" bien mon fichier Dir.properties ?
    Si c'est vérifier dans un sens "débug", tu peux rajouter des system.out.println(); sur à peu près tout comme par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system.out.println("propFile  >> " + propFile);
    pour vérifier que le nom de fichier est bien récupéré. Ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    system.out.println("dn >> " + dn); 
    system.out.println("ou >> " + ou);
    ...
    (sachant que le plus propre serait de passer par log4j, mais chaque chos en son temps...)

    Sinon je ne vois pas de moyen particulier...
    Si tu parviens à afficher une valeur contenue dans le fichier c'est bon. Sinon c'est qu'il n'est pas chargé...

    Désolé, mais je ne vois rien d'autre..

  8. #8
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 157
    Par défaut
    C'est bien ce que j'avais fait, mais comme j'ai toujours une erreur, c'est logique qu'il ne m'affiche rien.

    Il y a une chose que je ne comprends pas. Dans mon fichier properties, j'ai dn="uid={0}, ou=personne, dc=esnig, dc=ch".
    Comment sait-il à quoi correspond l'uid ?
    Grâce à l'option -D-uid="geiersberger" qui se trouve dans mon bat ?

    Je ne comprends pas bien le fonctionnement

  9. #9
    Membre expérimenté Avatar de xxaragornxx
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Par défaut
    Citation Envoyé par sangei
    C'est bien ce que j'avais fait, mais comme j'ai toujours une erreur, c'est logique qu'il ne m'affiche rien.

    Il y a une chose que je ne comprends pas. Dans mon fichier properties, j'ai dn="uid={0}, ou=personne, dc=esnig, dc=ch".
    Comment sait-il à quoi correspond l'uid ?
    Grâce à l'option -D-uid="geiersberger" qui se trouve dans mon bat ?

    Je ne comprends pas bien le fonctionnement
    En fait tu reviens à une question que je te posais plus haut qui est pourquoi autant de uid ?

    Soit tu mets tout ds un fichier properties:

    uid=
    ou=
    dc=
    dc2=
    De plus tu donnes soit dans ce fichier tout un dn=...............
    Soit en plusieurs parties comme ci dessus.
    L'intérêt de plusieurs parties est que tu n'as pas à faire le travail de découpage pour récupérer chaque champ.

    Ou alors tu n'as pas besoin de fichier properties et dans ce cas tu le donnes en option -D à ton lanceur java...

    Dans tous les cas, c'est redondant de faire les deux cas.
    En plus ce que je ne comprends pas pour toi, c'est pour quoi dans un cas uid={0} et dans un autre uid=geiersberger ?

  10. #10
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 157
    Par défaut
    Ce qui se passe est qu'on m'a demandé d'utiliser quelque chose qui ressemble à :
    • dn="uid={0}, ou=personne, dc=esnig, dc=ch"

    en utilisant la classe Properties. Et voilà... débrouille-toi.

    Alors mon problème est que je ne vois pas très bien la finalité de cette utilisation.

    Ce que je dois utiliser est uid={0}...

    Alors en résumé, tout ceci n'est pas du tout clair pour moi... tu as dû t'en rendre compte!

    Si je mets que uid={0}.... qu'est-ce qui se cache derrière, je veux dire comment est-ce que ça fonctionne ?[/list]

  11. #11
    Membre expérimenté Avatar de xxaragornxx
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Par défaut
    Ok...

    Bon on va partir sur le fichier properties donné en paramètre de ton lanceur java.

    je te l'écris comme je l'aurais fait pour moi:

    du coup, ton run.bat doit ressembler à ça:

    java -classpath ./classes -DDir.properties=/src/ch/esnig/ldap/Dir.properties ch.esnig.ldap.ClientLDAPUI
    Pour le fichier properties Dir.properties:
    dn="uid={0}, ou=personne, dc=esnig, dc=ch"
    url=ldap://localhost:389
    authentication=simple
    credentials=essai999
    En fait j'aurais même découpé le dn en
    uid=
    ou=
    ...
    Mais bon, gardons le dn tel quel ici...

    Et dans le code (grosso modo)

    En variable de classe (par exemple):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Properties prop;
    String dn, url, authentication, credentials;
    puis un méthode pour initialiser les properties:

    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
    public void initProperties() throws ch.esnig.ldap.ClientLDAPException{
          try {
                String propFile = System.getProperty("Dir.properties"); 
                FileInputStream in = new FileInputStream(propFile); 
                prop = new Properties(); 
                prop.load(in); 
                in.close(); 
     
                dn = (String)prop.getProperty("dn"); 
                url= (String)prop.getProperty("url"); 
                authentication= (String)prop.getProperty("authentication"); 
                credentials= (String)prop.getProperty("credentials");
          }
          catch (IOException ex) {
                 throw new ClientLDAPException("Fichier properties introuvable ou mal formé", ex);
          }
    }
    A appeler en 1er, voire dans le constructeur de ta classe (dans ce cas autant mettre la méthode private)

    Puis une méthode de connection à LDAP:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public void connection (String credentials, String principal, String url, String authentication)  throws ch.esnig.ldap.ClientLDAPException { 
        try { 
          Hashtable<String,String> env = new Hashtable<String,String>(); 
          prop.put (Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); 
          prop.put (Context.PROVIDER_URL, url); 
          prop.put (Context.SECURITY_AUTHENTICATION, authentication); 
          prop.put (Context.SECURITY_PRINCIPAL, uid); 
          prop.put (Context.SECURITY_CREDENTIALS, credentials); 
     
          ctx = new InitialDirContext(prop); 
          ... 
          ...
    et pour l'uid à mettre dans ton prop.put, tu l'extrais du dn que tu as récupéré...

    Ca t'aide ?

  12. #12
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 157
    Par défaut
    Merci infiniment xxaragornxx.

    Ca m'aide énormément. Tu m'enlèves une grosse épine du pied comme on dit!

    Maintenant je comprends mieux le fonctionnement de la classe Properties.

    Toute bonne journée à toi.

    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [Servlet] Utilisation de plusieurs classes
    Par hedgehog dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 04/05/2005, 09h43
  2. Utilisation de la classe List de STL avec wxWidgets
    Par aoyou dans le forum wxWidgets
    Réponses: 7
    Dernier message: 10/03/2005, 17h41
  3. Réponses: 8
    Dernier message: 22/12/2004, 22h57
  4. [SWT] Utilisation de la classe Tracker
    Par arN34 dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 24/11/2004, 10h28
  5. Réponses: 2
    Dernier message: 18/05/2004, 14h12

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