Hallo,
in der folgenden einfachen Methode eines Java-Agenten möchte ich die Dokumente einer Collection in ein TreeMap speichern und zurückgeben. Der Schlüssel für den späteren Zugriff auf Dokumente soll die eMail-Adresse der Person darstellen:
private TreeMap<String, Document> getLNcontacts (String notesServer, String notesDB)
{
TreeMap<String, Document> mPersons = new TreeMap<String, Document>();
try {
Database db = getSession().getDatabase(notesServer, notesDB, false);
DocumentCollection dc = db.search("SELECT Type = \"Person\"");
Document currDoc = dc.getLastDocument();
while (currDoc != null)
{
if (!currDoc.isDeleted() && currDoc.isValid()) {
String key = currDoc.getItemValueString("InternetAddress").toLowerCase();
(*) mPersons.put(key, currDoc);
}
currDoc = dc.getPrevDocument();
}
} catch (Exception e) {
e.printStackTrace(pwLog);
}
return mPersons;
}
Die Collection "dc" enthält ca. 37 Tausend Dokumente. Wenn ich den Agenten testweise laufen lasse, stürzt der Designer nach einigen Tausend Dokumenten komplett ab und erzeugt ein Eclipse-Coredump. Die Absturzstelle (Dokument bei dem es passiert) ist jedesmal unterschiedlich. Kommentiere ich die mit (*) markierte Zeile aus, läuft das Programm durch (tut aber natürlich weiter nichts, da mir die Daten fehlen). Schreibe ich in den TreeMap ein zuvor erzeugtes Dummy-Dokument, läuft die Methode auch durch. Es ist eindeutig das Problem des Zugriffs auf das sich aktuell im Zugfiff befindene Dokument (hier: currDoc).
Fällt hier jemadem ein Programmierfehler auf?
Danke für eure Unterstützung.
Andreas