Domino 9 und frühere Versionen > ND6: Entwicklung

LDAP Search aus Notes DB heraus

(1/4) > >>

Thomas Schulte:
Hat eigentlich schon mal jemand einen LDAP Search aus einer Notes Datenbank heraus in irgendeiner Form zum Laufen gebracht?

Kann mich da mal jemand in die Mysterien einweihen?
Es gibt hier eine Beschreibung wie das funktionieren soll. Wenn ich das nachvollziehe bekomme ich aber nur einen Haufen Java Fehlermeldungen.

Thomas

animate:
welche Fehler denn?

Thomas Schulte:
Wenn ich das über ein Konfigurations Dokument in dieser Form

--- Code: ---   // Set up the environment for creating the initial context
        String ldapCF = _confdoc.getItemValueString("ldapCF");
        String ldapURL = _confdoc.getItemValueString("ldapURL");
        String ldapBaseDN =_confdoc.getItemValueString("ldapBaseDN");
        String ldapUserID = _confdoc.getItemValueString("ldapUser");
        String ldapPassword = _confdoc.getItemValueString("ldapPassword");

--- Ende Code ---
einlesen lasse krieg ich das hier raus:

26.07.2005 14:46:55   Agent  error: java.lang.NullPointerException
26.07.2005 14:46:55   Agent  error:    at java.util.Hashtable.put(Hashtable.java:397)
26.07.2005 14:46:55   Agent  error:    at LDAPSearchWithFilter.NotesMain(LDAPSearchWithFilter.java:47)
26.07.2005 14:46:55   Agent  error:    at lotus.domino.AgentBase.runNotes(Unknown Source)
26.07.2005 14:46:55   Agent  error:    at lotus.domino.NotesThread.run(NotesThread.java:215)


Verdrahte ich das Ganze direkt mit dem hier

--- Code: ---   String ldapCF = "com.sun.jndi.ldap.LdapCtxFactory";
   String ldapURL = "ldap://myldapsrv.mydomain.net:389/";
   String ldapBaseDN ="o=MyOrg; c=de";
   String ldapUserID = "cn=Administrator";
   String ldapPassword = "";

--- Ende Code ---
dann gibt er das hier aus

26.07.2005 14:09:00   Agent  error: javax.naming.CommunicationException: ldap.agsintra.net:389.  Root exception is
26.07.2005 14:09:00   Agent  error: java.lang.SecurityException: ldap.agsintra.net,-1
26.07.2005 14:09:00   Agent  error:    at lotus.notes.AgentSecurityManager.checkConnect(AgentSecurityManager.java:172)
26.07.2005 14:09:00   Agent  error:    at java.net.InetAddress.getAllByName0(InetAddress.java:579)
26.07.2005 14:09:00   Agent  error:    at java.net.InetAddress.getAllByName0(InetAddress.java:560)
26.07.2005 14:09:00   Agent  error:    at java.net.InetAddress.getByName(InetAddress.java:469)
26.07.2005 14:09:00   Agent  error:    at java.net.Socket.<init>(Socket.java:121)
26.07.2005 14:09:00   Agent  error:    at com.sun.jndi.ldap.Connection.<init>(Connection.java:215)
26.07.2005 14:09:00   Agent  error:    at com.sun.jndi.ldap.LdapClient.<init>(LdapClient.java:127)
26.07.2005 14:09:00   Agent  error:    at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2398)
26.07.2005 14:09:00   Agent  error:    at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:258)
26.07.2005 14:09:00   Agent  error:    at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:91)
26.07.2005 14:09:00   Agent  error:    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:674)
26.07.2005 14:09:00   Agent  error:    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:255)
26.07.2005 14:09:00   Agent  error:    at javax.naming.InitialContext.init(InitialContext.java:231)
26.07.2005 14:09:00   Agent  error:    at javax.naming.InitialContext.<init>(InitialContext.java:207)
26.07.2005 14:09:00   Agent  error:    at javax.naming.directory.InitialDirContext.<init>(InitialDirContext.java:92)
26.07.2005 14:09:00   Agent  error:    at LDAPSearchWithFilter.NotesMain(LDAPSearchWithFilter.java:60)
26.07.2005 14:09:00   Agent  error:    at lotus.domino.AgentBase.runNotes(Unknown Source)
26.07.2005 14:09:00   Agent  error:    at lotus.domino.NotesThread.run(NotesThread.java:215)


Ich hab das mal in eine Datenbank gepackt damit jeder meine Java UnFähigkeiten bewundern kann.

Ich glaub jetzt muss ich das dann doch mal richtig lernen. Nur wie wird sowas debugged?

animate:
der erste Fehler deutet darauf hin, dass in einer dieser Zeilen

        env.put(Context.INITIAL_CONTEXT_FACTORY, ldapCF);
        env.put(Context.PROVIDER_URL, ldapURL + ldapBaseDN);
        env.put(Context.SECURITY_PRINCIPAL, ldapUserID);
        env.put(Context.SECURITY_CREDENTIALS, ldapPassword);


genauer gesagt in LDAPSearchWithFilter.java:47

ein Wert null ist.

zum 2ten kann ich nix sagen

Zum Thema debuggen:
Ich nutze Java nicht mit Notes, ich kann dazu auch nicht viel sagen. Am vielversprechensten hört sich das hier an: Using Lotus Notes with Eclipse to manage and run your Java programs

Axel hat den Link schomal gepostet, glaube ich

Thomas Schulte:
OK Den Fehler hab ich auch gefunden, wenn hier
--- Code: ---   String ldapCF = _confdoc.getItemValueString("ldapCF");

--- Ende Code ---
kein Wert drinsteht dann muss man das so:

--- Code: ---    if (ldapCF == null){
ldapCF="";
}

--- Ende Code ---
abfangen damit er beim Hashtable nicht aussteigt.

Ach ja und die gute alte System Konsole kann tatsächlich mit

--- Code: ---System.out.println("ldapCF: " + ldapCF);

--- Ende Code ---
angesprochen werden.
Also hab ich Fehler Nummer 1 beseitigt und wende mich dem jetzt wieder auftauchenden Fehler Nummer 2 zu.  :'(

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln