JNDI Zugriff auf ein LDAP Verzeichnis

TomSto

Mitglied
Hallo.

Ich versuche jetzut schon seit geraumer Zeit mit Hilfe von JAva / JNDI auf ein LDAP zuzugreifen. Bisher blieb ich erfolglos.

Ich habe mit Hilfe eines Buches mir ein bischen Wissen über JNDI verschafft,
LDAP für JAVA Entwickler.
In diesem Buch wird auch ein Zugriff auf ein lokales Ldap Verzeichnis erklärt und demonstriert, was leider bei mir nicht funktioniert.

Ich habe den Anweisungen aus dem Buch so exakt wie es nur möglich ist, folge geleistet. Nur meine Ernte sind Errors....meistens Probleme mit dem Classpath, welche aber normalerweise nicht auftreten dürften.

Frage:
Kann mir einer kurz und knapp einen kleinen Code posten, wo einfach nur mit JNDI eine Connection zu einem LDAP gemacht wird?

oder mir bei der Korrektur der Errors weiterhilft?
hier der Code:

Code:
Context ctx = new InitialContext();
           browseRekursiv(ctx, 0);
        }

        public static final void browseRekursiv(Context ctx, int tiefe)
            throws NamingException {
    	


            NamingEnumeration enum = ctx.listBindings("");
            while (enum.hasMore()) {
                Binding b = (Binding) enum.next();
                if (b.getObject() instanceof Context) {
                    Context cur = (Context) b.getObject();
                    for (int i = 0; i < tiefe * 2; ++i)
                        System.out.print(' ');
                    System.out.println(b.getName());
                    browseRekursiv(cur, tiefe + 1);
                } // if
            } // while
        } // browseRekursiv

Die Properties stehen in der jndi.properties,
der Inhalt:

java.naming.factory.initial=com.sun.jndi.fscontext.FSContextFactory
java.naming.provider.url=file://c:\\LDAP_DB


Die Fehlermeldungen:


javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
at javax.naming.directory.InitialDirContext.getURLOrDefaultInitDirCtx(Unknown Source)
at javax.naming.directory.InitialDirContext.getAttributes(Unknown Source)
at javax.naming.directory.InitialDirContext.getAttributes(Unknown Source)
at Connect.main(Connect.java:66)
Exception in thread "main"


Vielen Dank!
 
Hallo!

Code:
import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.InitialDirContext;

public class AccessAD {

	public static void main(String[] args) {

		InitialDirContext initDirCtxt;

		Hashtable env = new Hashtable();
		env.put(
			Context.INITIAL_CONTEXT_FACTORY,
			"com.sun.jndi.ldap.LdapCtxFactory");

		env.put(Context.SECURITY_PRINCIPAL, "username@domäne");
		env.put(Context.SECURITY_CREDENTIALS, "password");
		env.put(Context.PROVIDER_URL, "ldap://exchangeServer:389/dc=domäne");
		try {
			initDirCtxt = new InitialDirContext(env);
			
			initDirCtxt.close();
		} catch (NamingException e) {
			e.printStackTrace();
		}
	}
}

So kann ich auf unseren Exchange Server (der spricht auch LDAP) zugreifen ...

Gruß Tom
 
Danke für die Hilfe

Ich habe bei meinem Code nun auch die URLinfo nicht mehr in einer externen Datei.
Ist auch besser so.

gruss
 

Neue Beiträge

Zurück