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