Domino 9 und frühere Versionen > ND8: Entwicklung

Problem bei Zugriff auf lokale Datenbank mit Java

(1/3) > >>

masseur81:
Hallo,

ich möchte aus einer J2EE-Applikation auf eine lokale Notes-DB zugreifen.
 - lokaler Notes8-Basic-Client installiert, aber mit persönlichem Account (user.id) genutzt
 - Zugriff aus J2EE-Applikation per technical user, also ein anderer als mein persönlicher
 - Path korrekt, NotesFactory.sinitThread() aufgerufen
Die Erscheinung ist nun die, dass die Session erzeugt wird, aber beim Zugriff auf eine Datenbank per NotesSession#getDatabase(...) der Thread hängen bleibt und nicht weiterschreitet. Auch außerhalb von J2EE, also in einer Test-Main-Methode geschieht dies.

Woran liegt das? Er fragt zwar manchmal auch nach einem Passwort für die user.id, aber danach passiert wieder nichts.

jBubbleBoy:
Wie sieht es denn aus, wenn der Notes-Client gestartet ist und unter den Sicherheitseinstellung der Punkt "Andere Notes-basierte Programme fragen kein Kennwort ab(vermindert Sicherheit)" aktiv ist?
Wichtig bei so einem Zugriff ist, das die System path-Variable einen Verweis zur nlsxbe.dll hat.
Da bei dieser Zugriffsvariante immer der Notes-Cleint gestartet sein muss, würde ich eher via diiop auf einen Domino-Server zugreifen.

bubble

masseur81:
Wie gesagt, PATH ist in Ordnung. Habe die Einstellung "Andere Notes-basierte Programme fragen kein Kennwort ab (vermindert Sicherheit)" abgeschaltet und bin immerhin einen Schritt weiter: NotesException: User <user> is not a server. Werde da bei den Quellen im Internet aber leider nicht schlau.

<user> ist dabei der Benutzername, unter dem ich selbst den Notes Client offen habe. Der User, den ich bei NotesFactory.createSession(null, user, pwd) übergebe, bleibt hier scheinbar unbeachtet.
Wenn ich den Notes Client vorher schließe, werde ich wieder nach dem Passwort gefragt und dann hängt der Thread.
Und unter Verwendung desselben persönlichen Accounts erhalte ich o.g. Fehler genauso. User <user> is not a server.

> Da bei dieser Zugriffsvariante immer der Notes-Cleint gestartet sein muss, würde ich eher via diiop auf einen Domino-Server zugreifen.
Das mach ich auch im Produktivsystem. Mir geht es aber darum, bei diesem J2EE-Projekt eine Testvariante mit lokalem Zugriff zu ermöglichen, damit man auch offline arbeiten kann. Und lokal haben wir Entwickler nunmal keinen DominoServer am Laufen.

EDIT: Habe nun Username und Password ganz weggelassen und nur NotesFactory.createSession() aufgerufen. Da funktioniert es zumindest aus der Main-Methode heraus. Aus der J2EE-Applikation bekomm ich dann aber eine Exception:
java.lang.UnsatisfiedLinkError: lotus/domino/local/Session.NCreateSession(I)I

Kann ich dann überhaupt nicht unter einem anderen Benutzernamen auf meine Datenbanken zugreifen?

m3:
1) Ich würde im Client eine Arbeitsumgebung für die ID anlegen, mit der Java dann zugreifen soll und den Notes Client schließen, während diese AU ausgewählt ist. Dann sollte es klappen.

2) Einen lokalen Domino Server zu installieren dauert (ohne tiefergehende Konfiguration) 10 bis 15 Minuten. Das ist nicht sonderlich schwer und erspart Dir/Euch einiges an Scherereien.
Siehe auch: Administration for the Developer - Installing and Configuring Your Own IBM Lotus Domino Server Playground! (PDF!)

jBubbleBoy:
Woher soll die "NotesFactory" (Notes-Client) einen anderen Benutzer kennen und dessen Passwort? Es holt sich die zuletzt genutzte user.id (aus der notes.ini) und versucht eine Session zu erzeugen, deshalb ist ein:

--- Code: ---NotesFactory.createSession(null, user, pwd)

--- Ende Code ---
an dieser Stelle sinnlos. Bei diiop nimmt er das Internet-Passwort, welches im NAB steht, das dem Notes-Client leider fehlt.
Also wenn Du das testen willst, dann entweder wie in meiner ersten Antwort beschrieben oder einen Domino Server installieren.

bubble

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln