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

  1. #1
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 157
    Par défaut [Débutante][LDAP] utilisation de la classe Properties
    Bonjour,

    J'ai codé une méthode de connection à LDAP qui se présente comme suit :
    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
     
    public void connection (String url, String authentication, String principal, String credentials) throws ch.esnig.ldap.ClientLDAPException {
        Hashtable<String,String> env;
        env = new Hashtable<String,String>();
        env.put (Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
        env.put (Context.PROVIDER_URL, url);
        env.put (Context.SECURITY_AUTHENTICATION, authentication);
        env.put (Context.SECURITY_PRINCIPAL, principal);
        env.put (Context.SECURITY_CREDENTIALS, credentials);
     
        try {
          ctx = new InitialDirContext(env);
        } catch ( javax.naming.NamingException e ) {
    	throw new ch.esnig.ldap.ClientLDAPException("Error : Initialisation du context LDAP! (connection)", e );
        }
      }
    Les variables sont alimentées au travers de mon run.bat.

    Dans le cadre de mon travail de diplôme, je dois faire en sorte d'utiliser la classe Properties dans le but de ne donner que l'uid pour me connecter.

    Tout ça n'est pas bien clair pour moi. J'ai essayé de trouver des exemples de connection en utilisant la classe Properties, mais en vain.

    Est-ce que quelqu'un pourrait me mettre sur une piste ?

    Merci d'avance!

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 50
    Par défaut
    Properties fonctionne un peu comme une map!
    Tu donnes une clé, tu as la valeur!

    +++
    vandoor

  3. #3
    NGY
    NGY est déconnecté
    Membre expérimenté
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 137
    Par défaut
    Il y a ce post qui en parle un peu.
    Sinon, tu peux aussi aller voir la Javadoc.

  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
    Merci. Je vais voir de quoi il retourne !

  5. #5
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 157
    Par défaut
    Je suis allée voir la doc en question...

    J'ai modifié mon code comme suit :
    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
     
    public void connection (String url, String authentication, String principal, String credentials) throws ch.esnig.ldap.ClientLDAPException {
        Properties prop = new Properties();
        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, principal);
        prop.put (Context.SECURITY_CREDENTIALS, credentials);
     
        try {
          ctx = new InitialDirContext(prop);
        } catch ( javax.naming.NamingException e ) {
    	throw new ch.esnig.ldap.ClientLDAPException("Error : Initialisation du context LDAP! (connection)", e );
        }
      }
    Le but serait que je puisse passer uniquement le uid et que le reste du dn soit récupéré par Properties.

    Je m'explique :
    dn = 'uid={0}, ou=personne, dc=esnig, dc=ch'

    Pour me connecter, j'aimerais utiliser l'uid et
    'ou=personne, dc=esnig, dc=ch correspond à la sous-branche' devrait être traité au travers de la classe Properties.

    Est-ce que quelqu'un pourrait éclairer ma lanterne, car je suis vraiment bloquée...

    Merci d'avance.

  6. #6
    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
    Le principe est d'avoir un fichier properties constitué de la manière suivante:

    Citation Envoyé par monAppli.properties
    dn=
    uid={0}
    ou=personne
    dc=esnig
    dc=ch
    Par la suite tu récupères ce fichier comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    InputStream in = instanceDeMaClassePrincipale.getClass().getClassLoader().getRessourceAsStream("com/monAppli/sousPackage1/sousPackage2/monAppli.properties");
    Properties prop = new Properties();
    prop.load(in);
    in.close();
    Si ton fichier est rangées dans tes packages

    Ou alors mieux si tu le passes en paramètre de ton application:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    String propFile = System.getProperty("monAppli.properties");
    FileInputStream in = new FileInputStream(propFile);
    Properties prop = new Properties();
    prop.load(in);
    in.close();
    Ce dernier point en mettant en paramètre de ton java:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -DmonAppli.properties="/home/monAppli/properties/monAppli.properties"
    Enfin tu peux récupérer tes valeurs de la manière suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    String dn = (String)prop.getProperty("dn");
    String uid = (String)prop.getProperty("uid");
    String ou = (String)prop.getProperty("ou");
    ...

  7. #7
    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 pour ces explications.

    Le code ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    InputStream in = instanceDeMaClassePrincipale.getClass().getClassLoader().getRessourceAsStream("com/monAppli/sousPackage1/sousPackage2/monAppli.properties"); 
    Properties prop = new Properties(); 
    prop.load(in); 
    in.close();
    remplace tout le code de ma méthode connection ou seulement une partie? :

    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
     
    public void connection (String url, String authentication) throws ch.esnig.ldap.ClientLDAPException {
        Properties prop = new Properties();
        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, principal);
        prop.put (Context.SECURITY_CREDENTIALS, credentials);   
     
        try {
          ctx = new InitialDirContext(prop);
        } catch ( javax.naming.NamingException e ) {
    	throw new ch.esnig.ldap.ClientLDAPException("Error : Initialisation du context LDAP! (connection)", e );
        }
      }
    Merci d'avance

  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
    J'ai modifié ma méthode selon les explications reçues. En voici un extrait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     public void connection (String credentials, String principal, String url, String authentication) throws ch.esnig.ldap.ClientLDAPException {
        InputStream in = ClientLDAP.getClass().getClassLoader().getResourceAsStream ("./src/ch/esnig/ldap/Dir.properties");
        Properties prop = new Properties();
        prop.load(in);
        in.close();
     
        String dn = (String)prop.getProperty("dn");
        String uid = (String)prop.getProperty("uid");
        String ou = (String)prop.getProperty("ou");
        String dc = (String)prop.getProperty("dc");
    J'ai une erreur à la compilation :
    • .\src\ch\esnig\ldap\ClientLDAP.java:25: non-static method getClass() cannot be r
      eferenced from a static context
      InputStream in = ClientLDAP.getClass().getClassLoader().getResourceAsStream
      ("./src/ch/esnig/ldap/Dir.properties");
      ^


    Je ne vois pas tellement à quoi correspond cette erreur, car ma méthode n'est pas statique!

    Est-ce que quelqu'un pourrait m'aider ?

    Merci d'avance

  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
    J'ai modifié ma méthode selon les explications reçues. En voici un extrait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     public void connection (String credentials, String principal, String url, String authentication) throws ch.esnig.ldap.ClientLDAPException {
        InputStream in = ClientLDAP.getClass().getClassLoader().getResourceAsStream ("./src/ch/esnig/ldap/Dir.properties");
        Properties prop = new Properties();
        prop.load(in);
        in.close();
     
        String dn = (String)prop.getProperty("dn");
        String uid = (String)prop.getProperty("uid");
        String ou = (String)prop.getProperty("ou");
        String dc = (String)prop.getProperty("dc");
    J'ai une erreur à la compilation :
    • .\src\ch\esnig\ldap\ClientLDAP.java:25: non-static method getClass() cannot be r
      eferenced from a static context
      InputStream in = ClientLDAP.getClass().getClassLoader().getResourceAsStream
      ("./src/ch/esnig/ldap/Dir.properties");
      ^


    Je ne vois pas tellement à quoi correspond cette erreur, car ma méthode n'est pas statique!

    Est-ce que quelqu'un pourrait m'aider ?

    Merci d'avance
    Si tu adoptes ce choix pour récupérer un fichier properties (càd ton fichier à l'intérieur de tes packages, pas le plus souple comme on en a déjà discuté), la méthode getClass() n'est valide que sur un objet (une instance de ta classe). Or ici tu sembles le faire sur le nom de ta classe comme pour faire appel à une méthode statique !

    Donc si ton code se trouve dans ta classe principale ClientLDAP, le plus simple est de faire un this.getClass().
    Cela dit, il ne faut pas le faire dans une méthode statique, bien entendu.

    De plus dans ce choix, ce n'est plus un "chemin de répertoire que tu donnes", mais un le nom entier de ton fichier au sens Java dans un package. Par conséquent, il faut partir de la racine du package et dans ce cas utiliser: getClass().getClassLoader().getResourceAsStream("ch/esnig/ldap/Dir.properties");

    J'espère que je ne suis pas trop obscure...

  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
    Merci xxaragornxx.

    Voici de quoi a l'air ma méthode connection :
    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
     
    public void connection (String credentials, String principal, String url, String authentication) throws ch.esnig.ldap.ClientLDAPException {
        InputStream in = this.getClass().getClassLoader().getResourceAsStream ("ch/esnig/ldap/Dir.properties");
        Properties prop = new Properties();
        prop.load(in);
        in.close();
     
        String dn = (String)prop.getProperty("dn");
        String uid = (String)prop.getProperty("uid");
        String ou = (String)prop.getProperty("ou");
        String dc = (String)prop.getProperty("dc");
     
       // 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, principal);
        prop.put (Context.SECURITY_CREDENTIALS, credentials);
     
        try {
          ctx = new InitialDirContext(prop);
        } catch ( javax.naming.NamingException e ) {
    	throw new ch.esnig.ldap.ClientLDAPException("Error : Initialisation du context LDAP! (connection)", e );
        }
      }
    Mon problème maintenant est, qu'à la compilation, j'obtiens l'erreur suivante :
    • F:\undercvs\projets\DHU\td05_7_ldap_client\ldap\properties>javac -sourcepath ./s
      rc -classpath ./classes -d ./classes ./src/ch/esnig/ldap/ClientLDAPUI.java
      .\src\ch\esnig\ldap\ClientLDAP.java:28: unreported exception java.io.IOException
      ; must be caught or declared to be thrown
      prop.load(in);


    Quelle est la siginification précise de cette erreur ?

    Merci d'avance.

  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
    La partie où tu vas charger ton properties (cf la méthode load()) fait un accès à un fichier. Et ça, en Java, ça peut être une source d'exception si par exemple le fichier n'existe pas ou si tu n'as pas le droit de le lire.
    Donc cette méthode (et elle est définie comme ça dans le Javadoc) peut être amenée à lancer une IOException (Input Output si je ne dis pas de bêtise).

    Par conséquent, pour prévenir cette exception, le compilateur exige que ce code soit à l'intérieur d'un bloc try{} catch(IOException) {}

  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
    Ouh là, là ça se gâte.
    En fait, je fais une gestion d'erreur chaînée (comme on peut le voir dans le code ci-dessus).

    Est-ce que c'est possible de combiner les deux ?
    J'ai essayé plusieurs choses sur ma méthode connection, mais sans succès....

  13. #13
    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
    Ouh là, là ça se gâte.
    En fait, je fais une gestion d'erreur chaînée (comme on peut le voir dans le code ci-dessus).

    Est-ce que c'est possible de combiner les deux ?
    J'ai essayé plusieurs choses sur ma méthode connection, mais sans succès....
    Tu peux très bien faire le try/catch avec dns ton catch le lancement de l'exception suivant par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    throw new ch.esnig.ldap.ClientLDAPException("Error : Initialisation du context LDAP! (fichier properties introuvable ou mal-formé)", e );
    Comme ça ta chaîne d'exception comme tu l'appelles est respectée et en plus tu as un message significatif de l'erreur.

  14. #14
    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 beaucoup. Je vais essayer.

  15. #15
    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'ai apporté des modifications à ma méthode connection :
    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
     
    public void connection (String credentials, String principal, String url, String authentication) throws ch.esnig.ldap.ClientLDAPException {
        try {
        InputStream in = this.getClass().getClassLoader().getResourceAsStream ("ch/esnig/ldap/Dir.properties");
        Properties prop = new Properties();
        prop.load(in);
        in.close();
     
        String dn = (String)prop.getProperty("dn");
        String uid = (String)prop.getProperty("uid");
        String ou = (String)prop.getProperty("ou");
        String dc = (String)prop.getProperty("dc");
     
       // 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, principal);
        prop.put (Context.SECURITY_CREDENTIALS, credentials);
     
        //try {
          ctx = new InitialDirContext(prop);
        } catch ( IOException e) {
    	throw new ch.esnig.ldap.ClientLDAPException("Error : Initialisation du context LDAP! (connection)", e );
        }
      }
    Mais j'ai toujours un problème au sujet de la levée d'exceptions. Voici mon message d'erreur :
    • F:\undercvs\projets\DHU\td05_7_ldap_client\ldap\properties>javac -sourcepath ./s
      rc -classpath ./classes -d ./classes ./src/ch/esnig/ldap/ClientLDAPUI.java
      .\src\ch\esnig\ldap\ClientLDAP.java:45: unreported exception javax.naming.Naming
      Exception; must be caught or declared to be thrown
      ctx = new InitialDirContext(prop);


    Comment je peux gérer les deux types d'erreurs en même temps ? (javax.naming.Naming et IOException)

    J'apprécierais votre aide.

    Merci d'avance.

  16. #16
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    try {
    ...
    } catch ( IOException e) {
    // premier catch
    } catch (NamingException ne) {
    }

  17. #17
    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 Gfx.

    Ca fonctionne déjà mieux. Je ne savais pas qu'on pouvait avoir 2 blocs catch pour un seul try. On en apprend tous les jours !

  18. #18
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 157
    Par défaut
    Pour créer mon InitialContext, j'aimerais utiliser l'uid se trouvant dans le fichier properties ci-dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    package ch.esnig.ldap;
     
    dn="uid=geiersberger, ou=personne, dc=esnig, dc=ch"
    uid={0}
    ou=personne
    dc=esnig
    dc=ch
    Mon batch run.bat, quant à lui, se charge de fournir les autres paramètres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java -classpath ./classes ch.esnig.ldap.ClientLDAPUI -DDir.properties="ch.esnig.ldap.Dir.properties" -url="ldap://localhost:389" -authentication="simple" -credentials="essai999"
    Comment est-ce que je pourrais faire pour que la ligne
    • prop.put (Context.SECURITY_PRINCIPAL, uid)


    récupère l'uid de mon fichier 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
     public void connection (String credentials, String principal, String url, String authentication)
      throws ch.esnig.ldap.ClientLDAPException {
        try {
          // InputStream in = this.getClass().getClassLoader().getResourceAsStream ("ch/esnig/ldap/Dir.properties");
          String propFile = System.getProperty("Dir.properties");
          FileInputStream in = new FileInputStream(propFile);
          Properties prop = new Properties();
          prop.load(in);
          in.close();
     
          String dn = (String)prop.getProperty("dn");
          String uid = (String)prop.getProperty("uid");
          String ou = (String)prop.getProperty("ou");
          String dc = (String)prop.getProperty("dc");
     
          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);
          ...
          ...
    Désolée pour la longueur du message...

    Merci d'avance!

  19. #19
    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
    Bonjour,
    Je ne comprends pas trop ce que tu souhaites...
    De plus je vois 2 uid dans ton fichier properties:

    dn="uid=geiersberger, ou=personne, dc=esnig, dc=ch"
    uid={0}
    Si c'est le 2nd,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String uid = (String)prop.getProperty("uid");
    que tu fais dans ton code te retournera {0}

    Si c'est le 1er il faut d'abord faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String dn = (String)prop.getProperty("dn");
    Et ensuite découper la chaîne obtenue pour en extraire ton uid...

    Mais pourquoi as-tu d'ailleurs ces 2 "uid" ?

  20. #20
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 157
    Par défaut
    Oui effectivement je n'ai pas été très claire.
    Je vais essayer de faire mieux.

    Il y a un bug dans mon fichier properties... Je l'ai modifié comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    package ch.esnig.ldap;
     
    dn="uid={0}, ou=personne, dc=esnig, dc=ch"
    ou=personne
    dc=esnig
    dc=ch
    Le but est de ne passer que le userName ou le uid (je ne vois pas bien la différence à vrai dire) dans le run.bat pour me connecter.
    Le reste du dn devrait être récupéré depuis le fichier properties.

    Run.bat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java -classpath ./classes ch.esnig.ldap.ClientLDAPUI -DDir.properties="ch.esnig.ldap.Dir.properties" -url="ldap://localhost:389" -authentication="simple" -credentials="essai999"
    Et là-dedans, je pense qu'il devrait y avoir quelque chose du genre -uid="geiersberger" ?

    Ensuite, dans ma méthode connection, je devrais avoir, entre autres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    prop.put (Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
          prop.put (Context.PROVIDER_URL, url);
          prop.put (Context.SECURITY_AUTHENTICATION, authentication);
          [b]prop.put (Context.SECURITY_PRINCIPAL, dn);[/b]
          prop.put (Context.SECURITY_CREDENTIALS, credentials);
    A la compilation, je reçois une erreur de type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    F:\undercvs\projets\DHU\td05_7_ldap_client\ldap\properties>java -classpath ./cla
    sses ch.esnig.ldap.ClientLDAPUI -DDir.properties="ch.esnig.ldap.Dir.properties"
    -url="ldap://localhost:389" -authentication="simple" -credentials="essai999"
    url ldap://localhost:389
    authentication simple
    credentials essai999
    Exception in thread "main" java.lang.NullPointerException
            at java.io.FileInputStream.<init>(FileInputStream.java:103)
            at java.io.FileInputStream.<init>(FileInputStream.java:66)
            at ch.esnig.ldap.ClientLDAP.connection(ClientLDAP.java:32)
            at ch.esnig.ldap.ClientLDAPUI.main(ClientLDAPUI.java:63)
    C'est pas sûr que j'ai plus claire sur ce coup-là....

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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