Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino
Wie öffne ich eine Datenbank auf einem Server....
Gandhi:
aus einer Java Applikation.
Leider habe ich hier im Forum oder sonst wo nichts konkretes gefunden - obwohl ich schon laaaaange suche....
Zunächst zur Motivation: Will ein Verwaltungstool für ACLs schreiben. Aufgrund der grafischen Möglichkeiten von Java scheint mir es sinnvoll dies mit einer Java-Applikation zu realisieren.
Nun habe ich folgendes Problem:
Da nicht anzunehmen ist, dass auf allen Notes Servern ein DIIOP läuft möchte ich nicht per Corba zugreifen.
Ist es möglich auch über die lokale notes.jar auf Datenbanken auf Servern zuzugreifen?
Mir ist dies bisher nicht gelungen: Es öffnet sich ein Fenster jawaw.exe (in dem ich nichts eingeben kann) und in der Konsole wird nach Benutzernamen und Passwort gefragt. Das Flag im Notes-Client, nachdem externe Anwendungen bei aktiviertem Notes ohne Passwortabfrage auf Notes zugreifen können habe ich gesetzt.
Die Notessession hole ich mir per
Session s=Session.newInstance();
Der Zugriff auf lokale Datenbanken ist danach auch möglich.
Die Frage, die sich mir nun stellt ist, ob es möglich ist programmatisch den Username und das Passwort zu übergeben, oder ob man die Passwortabfrage in einem separaten Fenster abwicken kann (und wozu ist eigentlich das jawaw.exe Fenster, wenn man dort nichts eingeben kann?).
P.S.: Noch mal vielen dank an Ralf und Axel für ihre vorbildliche Unterstützung dieses Sub-Forums - wenn ich leider mangels Vorkenntnisse diese noch nicht so ganz nutzen kann wollte ich doch mal meine höchste Anerkennung für Euer Engagement ausprechen! Macht bitte weiter so!
Ralf_M_Petter:
Hier nochmal das kleine Demoprogramm das ich bereits in einem anderen Thread gepostet habe:
/*
* testprogramm.java
*
* Created on 31. Januar 2003, 10:05
*/
package test;
import lotus.domino.*; //Anweisung um den Java Compiler mitzuteilen, wo er die Notesklassen findet.
/**
*
* @author petter_r
*/
public class testprogramm {
/** Creates a new instance of testprogramm In unserem Beispiel brauchen wir keine Instance */
public testprogramm() {
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
NotesThread.sinitThread(); //Beim lokalen Zugriff nicht DIIOP muss der Thread erst für Domino initialisiert werden.
Session ses=null; //Sessionvariable definieren.
try { //Da Notes Klassen Exceptions werfen können sollte man diese auch abfangen.
ses = NotesFactory.createSession(); //Erzeugen eines Sessionobjekts
Database db=ses.getDatabase("ATARTW05/ARTWEGER/AT","mail/rpetter.nsf"); // Öffnen einer Datenbank bitte das anpassen an euer Umfeld z. B. Maildatenbank.
System.out.println("Datenbank hat folgenden Dateiname:"+db.getFileName());
System.out.println("Datenbank wurde zuletzt volltextindiziert am "+db.getLastFTIndexed().toString());
}
catch (Exception e){
System.out.println("Es ist ein Fehler aufgetreten");
e.printStackTrace();
}
finally{
try{
ses.recycle(); // Ganz wichtig, wenn dieser Befehl nicht ausgeführt wird, wird der Speicher den die Notesklassen im Hintergrund verwendet haben nicht mehr freigeben.
}
catch (NotesException e){}
NotesThread.stermThread(); //Domino Umgebung beenden. Ebenfalls ganz wichtig wenn man das nicht macht kann das zu Abstürzen von Notes führen.
}
}
}
Das Programm tut nichts anderes wie eine Datenbank zu öffnen, bitte diese Werte an deine Umgebung anpassen und dann den Dateinamen der Datenbank ausgeben und das Datum wenn Sie zum letzten mal vootextindiziert wurde.
Wenn Notes bereits geöffnet sollte das Passwort nicht abgefragt werden.
Das von dir beschriebene Session s=Session.newInstance() ist so nirgends beschrieben und ich denke, dass es deshalb nicht funktioniert. die richtige Vorgehendsweise wie auch in der Noteshilfe dokumentiert ist Session s=NotesFactory.createSession(). Bei dieser Methode gibt es auch Signaturen wo man Username und Passwort angeben muß. Aber normalerweise funktioniert es auch so.
Wenn du Fragen dazu hast, bitte frag ich werde versuchen Sie zu beantworten
Grüße
Ralf
Gandhi:
Hi Ralf,
leider funktioniert das Programm bei mir nicht.
Vielleicht war der Fehler, dass ich das Package Test einfach auskommentiert habe (was ist das?)
Daraufhin erhalte ich folgenden Fehler:
java.lang.NullPointerException Exception in Thread main.
Meine Fragen:
Weißt Du woran das liegt?
Warum ist eigentlich main ein Thread - und hätte das dann nicht vorher deklariert werden sollen (a la extends ...)?
Ich kann mir denken, dass diese Fragen sich äußerst dumm anhören...
Ralf_M_Petter:
Frage bekommst du keinen Stacktrace (Stacktrace ist die Ausgabe in der die Fehlermeldung mit der NullpointerException steht, enthält aber auch die aufgerufenen Methoden und die Zeilennummern an denen das Programm gerade steht. Jeder Java Code wird immer in einem thread ausgeführt. Das was du meinst, ist wenn du zusätzliche Threads erstellen will, dann muss deine Klasse entweder von Thread erben odern die Schnittstelle Runnable implementieren. Bitte poste mal den genauen Aufruf des Programms und die Ausgabe welche du dann in der Konsole bekommst.
Grüße
Ralf
Gandhi:
So, jetzt sag ich es deutlich....Notes ist scheiße.
Das Problem war: Ich hatte den 6er Client offen.
Weitere Probleme resultierten daraus, dass ich die 6er notes.jar importiert hatte nicht die 5er.
Wenn der 5 Client geöffnet ist und auf die 5er .Jar verwiesen wird funktioniert das alles wunderbar.
Lass mich jetzt also meine Frage umformulieren...:
Wie funktioniert das mit dem 6er Client?
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln