Autor Thema: LDAP Search aus Notes DB heraus  (Gelesen 8219 mal)

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
LDAP Search aus Notes DB heraus
« am: 26.07.05 - 15:49:06 »
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
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re: LDAP Search aus Notes DB heraus
« Antwort #1 am: 26.07.05 - 16:02:59 »
welche Fehler denn?
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: LDAP Search aus Notes DB heraus
« Antwort #2 am: 26.07.05 - 16:24:10 »
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"); 
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 = "";
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?
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re: LDAP Search aus Notes DB heraus
« Antwort #3 am: 26.07.05 - 16:49:38 »
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

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: LDAP Search aus Notes DB heraus
« Antwort #4 am: 26.07.05 - 17:05:17 »
OK Den Fehler hab ich auch gefunden, wenn hier
Code
   String ldapCF = _confdoc.getItemValueString("ldapCF");
kein Wert drinsteht dann muss man das so:
Code
	   if (ldapCF == null){
			ldapCF="";
}
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);
angesprochen werden.
Also hab ich Fehler Nummer 1 beseitigt und wende mich dem jetzt wieder auftauchenden Fehler Nummer 2 zu.  :'(

« Letzte Änderung: 26.07.05 - 17:08:13 von Thomas Schulte »
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: LDAP Search aus Notes DB heraus
« Antwort #5 am: 26.07.05 - 17:07:49 »
Fehler nummer 2 taucht hier
Code
try { 
        // Create initial context 
**********************************************
==>        DirContext ctx = new InitialDirContext(env);  <==
**********************************************
        String[] attrIDs = {searchAttr}; 
        SearchControls ctls = new SearchControls(); 
        ctls.setReturningAttributes(attrIDs); 

// Specify the search filter 
String filter = "(|(cn="+searchCN+")(uid="+searchCN+"))"; 
// Search for objects using the above filter 
NamingEnumeration answer = ctx.search("", filter, ctls); 
					
findCN(answer, doc); 
// Close the context when we're done 
ctx.close(); 
    } catch(NamingException e) { 
        e.printStackTrace(); 
    } 

    } catch (Exception e) { 
    e.printStackTrace(); 
    } 
auf.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re: LDAP Search aus Notes DB heraus
« Antwort #6 am: 26.07.05 - 17:16:27 »
von hier

Zitat
if you use Domino R6 you mus set "run time security level to 2" on security tab from the agent properties.


evtl hilfts
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: LDAP Search aus Notes DB heraus
« Antwort #7 am: 26.07.05 - 17:18:36 »
Schaut bei mir so aus:
Code
	public static final String factory = "com.sun.jndi.ldap.LdapCtxFactory";
	public static final String provider = "ldap://ldap.xxxxxxxx.at:389";
...

			DirContext ctx;
			umgebung = new Hashtable();
			
			/* 	INITIAL_CONTEXT_FACTORY ... Constant that holds the name of the environment property for specifying the initial context factory to use. */
			umgebung.put(Context.INITIAL_CONTEXT_FACTORY, factory); 
			/* PROVIDER_URL ... Constant that holds the name of the environment property for specifying configuration information for the service provider to use. */
			umgebung.put(Context.PROVIDER_URL, provider);

			// This class encapsulates factors that determine scope of search and what gets returned as a result of the search.
			ctx = new InitialDirContext	( umgebung );

HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: LDAP Search aus Notes DB heraus
« Antwort #8 am: 26.07.05 - 18:24:05 »
OK Thomas Probier ich morgen mal aus.

Martin ich seh jetzt nicht wirklich einen Unterschied zwischen dem was du da drin hast und meinem Code?
Ich nehme mal an das das was du mit ... entfernt hast die anderen Parameter sind.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: LDAP Search aus Notes DB heraus
« Antwort #9 am: 26.07.05 - 19:20:50 »
Code
26.07.2005 14:09:00   Agent  error:    at lotus.notes.AgentSecurityManager.checkConnect(AgentSecurityManager.java:172)


Diese Zeile weisst darauf hin, dass es etwas mit der Agent-Security zu tun haben könnte.

Ansonsten empfehle ich *dringend* bei ernsthafteren Java Programmen inklusive Notes-Agenten Eclipse zu benutzen. Wenn du eine Scheibe von einen Brot haben willst, machst du das ja hoffentlich auch mit einem Messer und rupfst dir da nicht mit den Fingern ein Stück raus.  ;D

Was willst du eigentlich ungefähr machen?


OK Den Fehler hab ich auch gefunden, wenn hier
Code
   String ldapCF = _confdoc.getItemValueString("ldapCF");
kein Wert drinsteht dann muss man das so:
Code
	   if (ldapCF == null){
			ldapCF="";
}
abfangen damit er beim Hashtable nicht aussteigt.

Hälst du das wirklich für eine gute Idee?
Ist dieser Wert nicht vielleicht eher notwendig, damit du eine Verbindung mit dem LDAP Server herstellen willst?
Dann vielleicht eher so, weil du durch das "" setzen nichts gewinnst. 
Code
if ((ldapCF == null)  throw new RuntimeException ("Der KonfigWert \"ldapCF\" ist nicht gesetzt. Ohne den geht hier sowieso gar nichts."); 

Checke ausserdem bitte mal den  Namen des Feldes in der Maske hinsichtlich Case-Sensitivität mit "ldapCF".

Ich hab auch länger nix mehr mit Notes und Java gemacht. Ich würd aber heute auch statt System.out.println immer log4j oder jdk14-logging verwenden. Kann vielleicht mal einen kurzen Artikel schreiben, wie man das einrichtet. Es geht hier wirklich um Arbeitserleichterung. Eclipse - Benutzung fällt unter das gleiche Thema.

gruß Axel
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: LDAP Search aus Notes DB heraus
« Antwort #10 am: 26.07.05 - 22:35:10 »
Hi Axel

Diese Zeile weisst darauf hin, dass es etwas mit der Agent-Security zu tun haben könnte.
Hmm damit kann ich was anfangen, hoffe ich.

Ansonsten empfehle ich *dringend* bei ernsthafteren Java Programmen inklusive Notes-Agenten Eclipse zu benutzen. Wenn du eine Scheibe von einen Brot haben willst, machst du das ja hoffentlich auch mit einem Messer und rupfst dir da nicht mit den Fingern ein Stück raus. ;D
Naja, wenn ich aktuell kein Messer habe nehme ich die eingebauten Mehrzweckwerkzeuge. Aber im Prinzip hast du recht.

Was willst du eigentlich ungefähr machen?
Diesen LdapSearch zum Laufen bringen, erstmal. Und dann unter Umständen wenn das überhaupt funktioniert auch andere Daten aus diesem Metadirectory holen.

Hälst du das wirklich für eine gute Idee?
Ist dieser Wert nicht vielleicht eher notwendig, damit du eine Verbindung mit dem LDAP Server herstellen willst?
Dann vielleicht eher so, weil du durch das "" setzen nichts gewinnst.
Code
if ((ldapCF == null) throw new RuntimeException ("Der KonfigWert \"ldapCF\" ist nicht gesetzt. Ohne den geht hier sowieso gar nichts."); 
zu Frage 1, nein halte ich nicht. Es ist mir nur auf die Schnelle und mit meinem vorhandenen Halbwissen nix besseres eingefallen
zu Frage 2, ja ist er. Zumindest soweit ich die Doku verstanden habe. Wenn er aber leer ist, dann wird einfach ein Ätsch nix gefunden zurückgegeben. Also empfand ich das erst einmal als nicht so schlimm. Aber dein Vorschlag gefällt mir viel besser.

Checke ausserdem bitte mal den Namen des Feldes in der Maske hinsichtlich Case-Sensitivität mit "ldapCF".
Ja das ist Case-sensitive. Das war das erste was ich schmerzhaft wieder lernen musste.

Ich hab auch länger nix mehr mit Notes und Java gemacht. Ich würd aber heute auch statt System.out.println immer log4j oder jdk14-logging verwenden. Kann vielleicht mal einen kurzen Artikel schreiben, wie man das einrichtet. Es geht hier wirklich um Arbeitserleichterung. Eclipse - Benutzung fällt unter das gleiche Thema.
Alles was hilft ist willkommen.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: LDAP Search aus Notes DB heraus
« Antwort #11 am: 27.07.05 - 10:54:48 »
Also der Tip mit der Agent Security war schon mal Gold wert, Das hat Fehler Nummer 2 behoben.
Gruppen krieg ich jetzt schon mal zurück. Bei Personen muss ich mir den Zirkus noch genauer anschauen.

So jetzt noch eine Frage. Wie bringe ich dem Java Agent bei, das er in die Notes Maske bei Abbrüchen oder Fehlern die entsprechende Fehlermeldung direkt mitteilt?
Das müsse doch irgendwie in der Catch Anweisung zu realisieren sein, oder?

So in der Art:
Code
If (doc != null) {
doc.replaceItemValue("FailureMessage", e); 
    doc.save(true); 
}
Und wie ist das mit mehreren Catch Anweisungen, sind die so in der Art wenn einer fällt dann fallen alle oder bricht Java da sofort ab?

Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: LDAP Search aus Notes DB heraus
« Antwort #13 am: 27.07.05 - 11:12:56 »
Thomas willst du einen  :-* oder lieber ein Y
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: LDAP Search aus Notes DB heraus
« Antwort #14 am: 27.07.05 - 11:43:54 »
Zur Unterstützung s. http://java.sun.com/j2se/1.4.2/docs/api/index.html

1. Grundsätzlich:
Meldungen im NotesDokument richten sich an den User, da der User das NotesDokument sieht.
Exception Stack Traces sind aber nicht für den User bestimmt. Sie sind mehr ein effizientes Kommunikationsmittel, damit der technische Experte für die Anwendung (dh. der Entwickler) die Ursache des Fehlers herausfinden kann.
In das Dokument würde ich eine für den User verständliche Meldung schreiben.
Den Inhalt des Stacktraces in ein LogFile.
Z.B. könntest du so arbeiten:
e.setMessage("Das Feld xxxx enthält keinen Wert");
und dann: 
doc.replaceItemValue("FailureMessage", e.getMessage());
 
2. Wie kommst du jetzt an die StackTrace Information?
Die Methode Document.replaceItemValue(String itemName, Object itemValue) konvertiert bestimmte Typen von Objekt direkt in ein entsprechendes Notes-Feldformat. Z.B. Document.replaceItemValue("eineZahl", new Integer(4)); erzeugt ein Notes Zahlenfeld.
Ich vermute stark (habs nicht ausprobiert), dass wenn man der Methode ein Object itemValue von einem Typ übergibt, mit dem es nicht direkt etwas anfangen kann (s. Notes Hilfe), die Methode versucht daraus einen String zu machen.
Jedes Objekt in Java besitzt eine String Repräsentation. Einfach weil alle Klassen von java.lang.Object erben und  java.lang.Object besitzt eine Methode toString(). Da diese Methode in der Basisklasse von allen Objekten vorhanden ist, kann sie für jedes Objekt egal welchen Typs aufgerufen werden.
Nun übergibst du ihr ein Objekt e vom Typ Exception (oder ein child von Exception). Exception wiederum erbt von java.lang.Throwable.
java.lang.Throwable besitzt eine Methode toString(), welche die Methode toString() von java.lang.Object überschreibt.
Nur leider wird man damit wenig anfangen können.

Aus 1.4.1 java-api:
Zitat
Throwable.
toString
public String toString()Returns a short description of this throwable. If this Throwable object was created with a non-null detail message string, then the result is the concatenation of three strings:
The name of the actual class of this object
": " (a colon and a space)
The result of the getMessage() method for this object
If this Throwable object was created with a null detail message string, then the name of the actual class of this object is returned.

Overrides:
toString in class Object
Returns:
a string representation of this throwable.

Was du in die Konsole geschrieben hast, ist auch etwas anderes:
Nicht System.out.println(e); sondern e.printStackTrace();
Logging Frameworks wie log4j unterstützen mit speziellen Methoden die automatische Ausgabe von StackTraces. Z.B. muß man log4j einfach logger.error(e) oder so aufrufen.

Kann man auch von Hand über die Methode
StackTraceElement[] Throwable.getStackTrace(). Wie du siehst ist StackTraceElement ein Array (diese Klammern[]). StackTraceElement enthält wiederum eine toString() Methode, die das zurückgibt, was unter e.printStackTrace() ausgegeben wird.

Du könnstest mal das folgende ausprobieren:
doc.replaceItemValue("FailureMessage", e.getStackTrace());

FailureMessage sollte dafür aber ein Mehrfachwertefeld sein.

Gruß Axel
« Letzte Änderung: 27.07.05 - 12:21:46 von kennwort »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: LDAP Search aus Notes DB heraus
« Antwort #15 am: 27.07.05 - 12:17:31 »
Java ist komplex und bei komplexen Dingen ist es imho sinnvoll, dass man über einen Sack an gewisses von der Comunity geteilten Grundwissen über Konzepte, Begriffe und Mechanismen hat. Möglichkeiten sind Bücher, Zeitschriften, Weblogs und (als imho nicht uneffiziente Basis) die Java 1.5 Zertifizierung. Das ist natürlich mühselig, aber das verschafft einen schon mal eine Basis, von der sich viele Dinge ableiten.

- very offtopic -
Ich erleb das z.B. gerade in Go. Ich Falle da oft als (Fach-) Gesprächspartner aus, weil ich mir viele Begriffe von diesen ganzen grundlegenden Expertenkonzepten fehlen. Hane, Sente besitze ich inzwischen. Sowas wie Tesuji (und vieles andere) noch nicht. Ich werd aber mit den Monaten diese Konzepte begreifen und verlange auch nicht von Experten, mich als semantischen Maßstab zu nehmen. Ich hab jetzt 2 Bücher für den gehobenen Anfänger und nehme für 15$ in 3 Monaten an Lektionen auf KGS teil. Btw. haben die imho einen Standard an E-Learning erreicht, der dem Angeboten im IT Bereich überlegen ist (sehr interessant). Manchmal verstehe ich da auch nur Bahnhof, aber ich eigne es mir langsam aber stetig an.

Gestern hab ich z.B. erstmals den chilenischen Kultfilm "taxi para tres" in Spanisch Chilenisch mit deutschen Untertiteln gesehen. Zumindest 2 der Personen sprachen ein dermassen krasse Ganoven-Chilenisch, dass ich sie ohne Untertitel nicht verstanden hätte, obwohl ich immer noch einige der Sprüche, der Wortschöpfungen, der Kontextveränderungen von Worten kenne, sowie mit der allgemeinen Betonung vertraut bin. Andere Figuren im Film konnte ich dagegen in unterschiedlichen Graden mehr oder weniger problemlos verstehen. Es ist aber so, dass ab einem bestimmten Punkt die Lücken an Konzepten, Mechanismen und Begriffen zu groß werden als dass ich noch folgen könnte.
Ein dortiger Freund und Chef einer leicht zweifelhaften Leiharbeitsfirma, für die ich nie gearbeitet habe, hatte immer viel Spaß mir zu zeigen, dass ich Teile von Unterschichten-Chilenisch einfach nicht verstehe und er wollte es mir beibringen. Ich glaub aber, dass z.B. Spanier diese Personen ohne Untertitel verstehen können (so wie wir - nach einer Zeit der Eingewöhnung - Schweizer-Deutsch folgen können). Und zwar deshalb, weil sie einfach ein wesentlich tieferes Wissen über die Basics der Sprache Spanisch als ich haben.

Axel
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline mehrda

  • Frischling
  • *
  • Beiträge: 3
Re: LDAP Search aus Notes DB heraus
« Antwort #16 am: 01.02.06 - 14:26:18 »
Geniales Tool, genau das, das ich brauche.

Ich habe mal die Scripts implementiert und alles so eingestellt, wie es sein muss (denke ich jedenfalls) jetzt gibt mir das Java jedoch immer Fehler aus...

***************************************************************

NotesException: A required argument has not been provided

   at lotus.domino.local.Database.NgetDocumentByID(Native Method)

   at lotus.domino.local.Database.getDocumentByID(Unknown Source)

   at LDAPSearchWithFilter.NotesMain(LDAPSearchWithFilter.java:26)

   at lotus.domino.AgentBase.runNotes(Unknown Source)

   at lotus.domino.NotesThread.run(NotesThread.java:215)

***************************************************************

Kann mit da jemand weiterhelfen?

Gruss, Dave

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz