Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino

Java Agent wirft Fehler "Special database object cannot be located"

<< < (2/2)

umi:
Wenn dein Agent auf eine URL zugreifen will, geht das mit garantie in die Hose, solange Du nichts am Java.policy File machst.
 In der Regel werden alle Zugriffe von Java zu irgendwelchen Netzwerkresourcen blockiert.
Entweder Du packst deinen Agenten in ein Jar File und dann im Domino unter jvm\lib\ext oder Du änderst das Policy File
unter jvm\lib\security\java.policy

da den Eintrag bei Grant All um den die Zeile AllPermission ergänzen.
 Grant all {
   permission java.security.AllPermission;
}

Nachteil dieser Methode, es wird jeglicher Java Code mit allen Berechtigungen ausgestattet und lässt so relativ ein grosses Loch in der Sicherheit offen.

flaite:

--- Zitat von: umi am 01.12.11 - 12:46:57 ---Wenn dein Agent auf eine URL zugreifen will, geht das mit garantie in die Hose, solange Du nichts am Java.policy File machst.
 In der Regel werden alle Zugriffe von Java zu irgendwelchen Netzwerkresourcen blockiert.
Entweder Du packst deinen Agenten in ein Jar File und dann im Domino unter jvm\lib\ext oder Du änderst das Policy File
unter jvm\lib\security\java.policy

da den Eintrag bei Grant All um den die Zeile AllPermission ergänzen.
 Grant all {
   permission java.security.AllPermission;
}

Nachteil dieser Methode, es wird jeglicher Java Code mit allen Berechtigungen ausgestattet und lässt so relativ ein grosses Loch in der Sicherheit offen.



--- Ende Zitat ---

Das ist so nicht wahr. In dem Design Dokument des Agenten kann man die Security mit einem einfach Mausklick so einstellen, dass er auf URLs zugreift.
Das 2. angehängte Bild im Posting vom  28.11.11 - 20:18:53 in diesem Thread. http://atnotes.de/index.php/topic,52899.20.html
Stichwort Runtime Security Level.

Legolas:
Hallo umi,

ich lege immmer das jar File im Dominoserver unter jvm\lib\ext ab.
So kenne ich dies auch von allern anderen periodischen Agenten, die ich unter Lotus laufen habe.

Daher kommt das Problem sicherlich nicht!

Grüße
Legolas

flaite:

--- Zitat ---1) Wenn ich dich richtig verstehe, wird ein Java-Agent der auf die http Enging von Domino zugreift nicht im Namen des Dominoservers ausgeführt (wie Notes Agenten), sondern greift immer als Anonymous zu?  
Oder welche Berechtigung benötigt ein solcher Agent denn?
(Normale Java Agenten auf dem Server laufen aber im Kontext des Servers. Hier habe ich schon Agenten laufen, die auf Dokumente mit Autorenfeldern zugreifen!)

--- Ende Zitat ---
Wenn Du mit docURL.openStream() auf dem Server zugreifst generiert Java ein HTTP-Get. Die Java-Klasse URL weiss aber nix über Domino Security. Domino erwartet eine BASIC oder sessionbasierte Authentifizierungsinfo des HTTP Get Requests. Das müßtest Du selber bauen. Am einfachsten geht das aus meiner Sicht mit den jars von jakarta HTTPClient und dafür hab ich ein openSource Framework am Start (s.o.)



--- Zitat ---2) Hat das obige Problem vielleicht irgendwas mit den Einstellungen „Öffentliches Dokument“ zu tun?

--- Ende Zitat ---
Sicher nicht. Du kannst den Browsercache und die Cookies löschen und versuchen auf diese URL zuzugreifen. Sofern keine Authentifizierungsbox erscheint, funktioniert das auch aus Java Klassen ohne Authentifizierungs Information. Ich hab gute Erfahrung damit gemacht, den Netzwerkverkehr mit wireshark zu monitoren, um so ein Verständnis zu erhalten, was da eigentlich vor sich geht.


--- Zitat ---3) Benötigt die Anwendung irgendwelche Designelemente, die diese Art von Java-Agent Aufruf erwartet? (z.B.: DefaultView, usw.)

--- Ende Zitat ---
Defaultview kann sein. Du kannst ja mal versuchen statt auf das Dokument auf eine View per URL aus dem Agenten zuzugreifen

--- Zitat ---4) Gibt es eine Möglichkeit, den Java Code der auf den http Task zugreift so auszuführen, dass dieser mit einer Berechtigung auf die DB ausgeführt wird, die nicht über den Anonymous läuft? (z.B.: im Kontext des Servers läuft!) Ziel wäre, mit Dokumente zu arbeiten, die Leser und Autorenfelder besitzen.

--- Ende Zitat ---
Ja, aber die Berechtigung (username, kennwort) mußt du irgendwo hinterlegen. Der Agent kann diese Informationen nicht aus sich selbst erzeugen.

--- Zitat ---5) Kennst du vielleicht einen einfacheren bzw. besseren Weg ein Dokument als HTML/Mime aus dem Backend zu erhalten um dies als EML-Datei abzuspeichern?

--- Ende Zitat ---
Nein. Deine Idee eine URL an die HTTP-Engine zu senden ist nach meiner Kenntnis ohne Alternative.

--- Zitat ---
6) Wenn ich einen System.err.println() im java-code ausführe, wird dieser in der Domino Konsole immer als "Agent error ...." ausgegeben. Gibt es eine Möglichkeit diesen irreführende Hinweis zu umgehen?

--- Ende Zitat ---
Ja, indem du System.out.println() schreibst  ;D

Legolas:
Hallo Pitiyankee,

danke für die ausführliche Rückmeldung von dir.
Werde mal schauen wie weit ich kommen.

Wegen Punkt 6) Ja,ja, die Jahre gehen halt nicht ohne Schaden an einem vorbei! Ich versinke im Boden....

Grüße
Legolas

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln