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

Web-Services, WSDL, SOAP und Rechteproblematik...

(1/2) > >>

jr:
Hallo zusammen,

für einen Kunden muss ich einen WebService-Schnittstelle in eine Notes-Datenbank implementieren. Das habe ich zwar noch nie gemacht, aber ich sagte mir "Geht nicht, gibt's nicht" und habe mich erst einmal eingelesen. In dem WSDL-File, das ich bekommen habe, steht alles drin, was ich für die Entwicklung des Clients wissen muss. Den Rest kann man sich im Internet zusammensuchen...  ;)

Bei der Suche nach entsprechenden Tools habe ich nach ein paar Fehlschlägen (WSDL.exe funktioniert wohl nur mit .net-Basic, xfire benutzt Annotations und geht nur mit jdk 5.0, axis2 liefert mir ca. 2 Mio. Dateien oder ich hab's nicht richtig verstanden) bin ich dann bei axis 1.4 gelandet. Das ist übersichtlich, leicht zu bedienen und zu verstehen und lässt sich auch noch prima in Eclipse einbinden. Mit WSDL2Java erzeugt er mir ansprechende und leicht verständliche Java-Quelltexte, die man leicht in seinen eigenen Code einbinden kann. Mit einer Zusatzbibliothek läuft das ganze dann sogar unter jdk 1.3, was ich für mein Notes 6.5 brauche.

Die Daten füllen, die Ergebnisse auslesen, funktioniert alles einwandfrei. Nur die Datenübertragung selbst tut nicht, weil hier irgend ein "access denied" auftaucht. Nach einigen Recherchen im Internet hab ich mitbekommen, dass Applikationen direkt laufen, Applets aber zuerst signiert werden müssen, damit das läuft. Verhält sich ein Java-Agent in Notes wie ein Applet? War mir bisher so gar nicht bewußt.

Nun, wenn das das Problem ist, wie signiere ich denn einen Java-Agenten bzw. eine Java-Bibliothek? Alle beteilgiten Agenten habe ich auf "3. Allow restricted operations with full admin rights" gestellt, aber das scheint nicht zu genügen. Die Elemente sind natürlich von mir signiert und ich habe volle Ausführungsrechte auf dem Server. Ein lokaler LS-Agent ruft dann mit RunOnServer() den Java-Agent auf dem Server auf. Das tut alles, nur bricht der Agent dann mit der Exception ab  ???:

Agent  error: java.security.AccessControlException: access denied (java.security.SecurityPermission setPolicy)
Agent  error:     at java.security.AccessControlContext.checkPermission(AccessControlContext.java:292)
Agent  error:     at java.security.AccessController.checkPermission(AccessController.java:476)
Agent  error:     at java.lang.SecurityManager.checkPermission(SecurityManager.java:538)
Agent  error:     at java.security.Policy.setPolicy(Policy.java:249)
...
Agent  error:     at lotus.domino.NotesThread.run(Unknown Source)


Dann habe ich hier im Forum etwas gefunden über die java.policy. Ich hab' keine Ahnung, was man da einstellen muss und selbst wenn das die Lösung wäre, die Datenbank soll bei meinem Kunden auf 27 Servern laufen und wenn das auf jedem Server manuell eingestellt werden muss... Naja, wenn es nicht anders geht, dann muss das halt sein.

Lange Rede, kurzer Sinn: Kann mir igend jemand helfen, wie ich den Web-Service so zum laufen bringe, dass keine Rechte diesen blockieren? Oder sollte ich für Notes ein anderes SOAP-Framework benutzen? Wie trägt man einen Agenten oder eine Bibliothek in die java.policy ein? Welche Erfahrung mit Web-Services habt Ihr gemacht? Habt Ihr andere Vorschläge?



Im Voraus vielen Dank für Eure Hilfe,

Joachim

flaite:
Ich weiss allerdings auch nicht, ob man so mir nichts dir nichts axis in Notes implementieren kann.
Eine andere Möglichkeit, die wir mal bei einem ex-Arbeitgeber verwendet haben:
Das SOAP per HttpConnection herunterladen und mit xml-libraries parsen.

jr:
Hallo Axel,

das mit axis scheint nicht das Problem zu sein, denn außer dem Rechteproblem funktioniert alles. Ob das mit dem Parsen ausreicht bin ich mir nicht sicher, denn wenn die Daten dann korrekt eingetragen sind, muss das Ganze ja wieder zurückgeschickt werden und dann habe ich ja das gleiche Problem.

Ich suche ja noch weiter im Internet und komme immer mehr zu der Erkenntnis, dass wohl alles an diesem policy-File liegt. Vielleicht muss ich mich da noch ein bisschen einarbeiten. Habe bisher noch keine Ahnung, wie da was eingetragen wird. Mal sehen...

Danke,

Joachim

flaite:

--- Zitat von: jr am 20.10.06 - 09:39:13 ---steht alles drin, was ich für die Entwicklung des Clients wissen muss. Den Rest kann man sich im Internet zusammensuchen...  ;)

--- Ende Zitat ---

--- Zitat von: jr am 20.10.06 - 09:39:13 ---, denn wenn die Daten dann korrekt eingetragen sind, muss das Ganze ja wieder zurückgeschickt werden

--- Ende Zitat ---
Programmierst du eigentlich einen Webservice Producer (anderes Wort für Server) oder einen Consumer (anderes Wort für Client).
Du kannst natürlich auch in einem Notes Agenten SOAP XML-Files selbst zusammenbauen und zurückschicken.
Im Sinne der Erfinder von SOAP ist das sicher auch nicht. Aber vielleicht machbar.

Übrigens ist die IBM Implementierung von Webservices in R7 nichts anderes als die Einbindung von Axis1. Die basieren auf genau diese Klassen. Auch die LotusScript Implementierung.

Die Geschichte mit den .policy files wird u.a. z.B. hier besprochen: http://java.sun.com/docs/books/tutorial/security/toolsign/index.html

Die policy auf deinem Domino Server ist hier:
<Domino-Programm>\jvm\lib\security

Die policy auf deinem Notes Client ist hier:
<Notes-Programm>\jvm\lib\security

Ein sehr gutes Buch für Java Security ist btw. "J2EE Security for Servlets EJBS and Web Services." von Pankaj Kumar. Der Titel ist leicht irreführend. Das Kapitel über J2SE Security ist sehr umfangreich.

Vermutlich musst du in die grant permission einfach die korrekten Genehmigungen reinschreiben. Paß aber auf, dass du kein Sicherheitsloch erzeugst.

jr:
Hallo,

in diesem Fall benötige ich nur einen Consumer. Der Server wird von einem komplett anderen System gestellt, auf den ich zugreifen muss. Von dort habe ich auch die WSDL-Datei bekommen, die ich jetzt umsetzen muss.

Das ist interessant, dass die R7-Implementierung auch auf Axis aufbaut. Da habe ich ja genau das richtige Tool ausgewählt. Ich weiß aber nicht, ob das unter R7 dann einfacher wird. Das muss ich demnächst einmal ausprobieren. Aber zuerst muss das jetzt mal unter R6 laufen.

Danke für den Buchtipp. Ich muss mal sehen, ob ich mir das irgend wie besorgen kann. Allerdings habe ich in der Zwischenzeit ein paar recht gute Seiten im Internet zum Thema Security gefunden. Auch über die Policy Implementierung. Ich muss mal sehen, ob ich damit zurecht komme.

Danke für die Hilfe,

Joachim

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln