Autor Thema: Problem bei Zugriff auf lokale Datenbank mit Java  (Gelesen 10454 mal)

Offline masseur81

  • Junior Mitglied
  • **
  • Beiträge: 90
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.

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: Problem bei Zugriff auf lokale Datenbank mit Java
« Antwort #1 am: 23.05.08 - 23:31:41 »
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
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline masseur81

  • Junior Mitglied
  • **
  • Beiträge: 90
Re: Problem bei Zugriff auf lokale Datenbank mit Java
« Antwort #2 am: 24.05.08 - 09:26:31 »
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?
« Letzte Änderung: 24.05.08 - 09:36:21 von masseur81 »

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: Problem bei Zugriff auf lokale Datenbank mit Java
« Antwort #3 am: 24.05.08 - 12:43:03 »
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!)
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 jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: Problem bei Zugriff auf lokale Datenbank mit Java
« Antwort #4 am: 24.05.08 - 17:53:07 »
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)
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
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline masseur81

  • Junior Mitglied
  • **
  • Beiträge: 90
Re: Problem bei Zugriff auf lokale Datenbank mit Java
« Antwort #5 am: 24.05.08 - 18:35:18 »
Okay, das ist immerhin eine Aussage. Danke dafür.

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Problem bei Zugriff auf lokale Datenbank mit Java
« Antwort #6 am: 24.05.08 - 19:57:11 »
Nein. Nein. Nein.
Wenn dieser Fehler
java.lang.UnsatisfiedLinkError: lotus/domino/local/Session.NCreateSession(I)I
kommt, ist das erst einmal ein Hinweis darauf, dass im Path des Betriebssystem das Notes Programmverzeichnis
a) nicht drinsteht oder
b) eine andere Version vor der erwarteten im Path steht.

In Windows.
Cmd Box öffnen, Set <return> und schauen was im Path steht.
Wenn das Notes8 Programmverzeichnis des Clients nicht drinsteht, über Einstellungen hinzufügen.
Ein "lokaler" Domino Server bringt erstmal überhaupt nix. Du kannst prima über local connections auf entfernte Domino Server zugreifen, sofern auf dem Server wo das J2EE ist, ein Client installiert ist.
Technisch liegt es daran, dass die Java-Klassen von Notes bestimmte dlls benötigen und die müssen für dein Java Programm irgendwie erreichbar sein.
Ich halte das für eine bessere Lösung als CORBA. Die CORBA Umgebung von Lotus ist:
a) sehr inperformant
b) sehr anfällig für Memory Leaks
c) besitzt noch einige Spezial-Bugs

« Letzte Änderung: 24.05.08 - 20:01:54 von Axel Janssen »
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 masseur81

  • Junior Mitglied
  • **
  • Beiträge: 90
Re: Problem bei Zugriff auf lokale Datenbank mit Java
« Antwort #7 am: 24.05.08 - 22:11:06 »
Ich wiederhole: Wie ich schon sagte: Der Path ist in Ordnung. Das Verzeichnis ist drin und keine ältere Version vorhanden.

> Du kannst prima über local connections auf entfernte Domino Server zugreifen,
> sofern auf dem Server wo das J2EE ist, ein Client installiert ist.

Ich möchte keine Connections zu anderen Servern aufbauen, weil ich hier eine LOKALE Testumgebung haben möchte, mit der man auch mal im Zug arbeiten kann.

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Problem bei Zugriff auf lokale Datenbank mit Java
« Antwort #8 am: 26.05.08 - 08:25:18 »
Zitat
ava.lang.UnsatisfiedLinkError: lotus/domino/local/Session.NCreateSession(I)I
Das ist die eindeutige Meldung, dass die dlls nicht gefunden werden können.
Hast du den JEE Server lokal? Normalerweise haben die ja den PATH des Betriebssystems.
Die Notes ID sollte imho auch im PATH liegen.
Für lokalen Zugriff muss der Notes Client nicht gestartet sein.

Zum Entwickeln im Zug kann man sich auch überlegen sowas wie Easymock oder JMock zu verwenden.
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 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: Problem bei Zugriff auf lokale Datenbank mit Java
« Antwort #9 am: 26.05.08 - 08:26:33 »
Wie gesagt, lokalen Domino-Server auf den Laptop und man muss am Code nicht mal was ändern ...
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 masseur81

  • Junior Mitglied
  • **
  • Beiträge: 90
Re: Problem bei Zugriff auf lokale Datenbank mit Java
« Antwort #10 am: 26.05.08 - 21:19:32 »
Ich muss auch so nichts am Code ändern, weil ich Connection-Daten ausgelagert habe.
Ich habe die Ursache nun gefunden, es fehlte noch die Initialisierung per NotesThread.sinitThread().
Danke für eure Hilfe, funktioniert jetzt alles bestens.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz