Nachdem ich in letzter Zeit einige Clients und Server aktualisiert habe (V11 - ich bin schon da!), ist mir ein altes Thema wieder eingefallen. Na gut, ich habe mich wegen eines Fehlers wieder mit dem Thema beschäftigen müssen und gehe davon aus, dass ich es wohl damals falsch gemacht habe. Aber worum geht es überhaupt?
HCL Notes und Domino haben eine hervorragende Verwaltung von Berechtigungen, inklusive elektronischer Signaturen und Ausführungskontrolle. Java hat ebenfalls etwas in der Art mit Permissions und Code-Signaturen. Wenn ich nun Java in Notes oder Domino ausführe - sei es als Agent oder in Form von XPages - ziehen beide Systeme - nacheinander.
Im Fall eines Java-Agenten in einer Notes-Datenbank auf dem Domino-Server wird erst einmal alles geprüft von Domino-Seite. Wenn es passt, läuft er los. Und wenn er dann eine kritische Operation durchführen will, wird Java-seitig geprüft, ob er das auch darf, also eine entsprechende Permission hat.
Vieles ist dabei schon gut voreingestellt, aber manches eben auch nicht. Gerade wenn man externe Bibliotheken benutzt (in Form von JAR-Archiven), braucht man häufig etwas mehr Rechte.
Dafür gibt es in Java die java.policy-Datei, die im {java.home}/lib/security-Verzeichnis liegt.
Noch einmal: Und wo ist jetzt das Problem?
Diese Datei gehört zur Java-Distribution dazu und wird bei Updates, also neuen Hauptversionen, teilweise bei Fix Packs und immer bei JVM-Patches ersetzt. Und danach fehlen die manuell erweiterten Berechtigungen wieder.
Aber es gibt eine einfache Lösung.
In der java.security-Datei im gleichen Ordner werden nämlich bis zu drei Orte definiert, die die JVM nacheinander einliest und für die Vergabe von Permissions nutzt: