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

Java Agent und Access denied Meldung.

(1/2) > >>

Thomas Schulte:
IBM Notes Version 8.5.3 FP3.

Folgendes Problem:
Ich habe hier einen Agenten der in Java geschrieben werden soll.
Über diesen Agenten soll ein Webservice aufgerufen werden. Dieser Webservice läuft über HTTPS aber das ist eine Baustelle die später zu lösen sein wird.

Im Moment bekomme ich beim Aufrufen von:
Pam4ProjectWSASoap soap = (Pam4ProjectWSASoap) me_serv.getPort(Pam4ProjectWSASoap.class);
eine AccessControlException
java.security.AccessControlException: Access denied (java.util.logging.LoggingPermission control)

Die Security Eigenschaften des Agents stehen eigentlich auf:
runtimeSecurityLevel = 3. Allow unrestricted operations with full administration rights.
Das für mich interessante ist, das man, sobald man den Java Agent source Code aufruft, und im Code irgendetwas ändert die Security in den Agent Properties auf  "Run as Web user" geändert wird und sich dann auch nicht mehr ändern lässt, bis man den Agenten im Source gespeichert und geschlossen hat.

Der komplette Code des Agents sieht aktuell so aus:

--- Code: ---import lotus.domino.*;
import javax.xml.namespace.QName;
import javax.xml.ws.*;
import java.net.URL;
import javax.swing.JOptionPane;
import java.util.logging.Level;

public class JavaAgent extends AgentBase {

    public void NotesMain() {

      try {
       //   Session session = getSession();
       //   AgentContext agentContext = session.getAgentContext();
       // (Your code goes here)
       //   Document me_Doc = agentContext.getDocumentContext();
          java.util.logging.Logger.getAnonymousLogger().setLevel(Level.OFF );

      URL me_url = new URL("http://pam-elements20/Pam.Web/pam4Projectws/Pam4ProjectWS.asmx?wsdl");
      QName me_qname = new QName("http://www.hs-soft.com/webservices/PAM-STORAGE","Pam4ProjectWSA");

          Service me_serv = Service.create(me_url, me_qname);
          Pam4ProjectWSASoap soap = (Pam4ProjectWSASoap) me_serv.getPort(Pam4ProjectWSASoap.class);
          javax.xml.ws.BindingProvider s=((javax.xml.ws.BindingProvider)soap);
         
          String me_String = soap.ping();
          JOptionPane.showMessageDialog(null, me_String);

      } catch(Exception e) {
      e.printStackTrace();
      String me_eString = e.toString();
      JOptionPane.showMessageDialog(null, me_eString);
       }
   }
   
}

--- Ende Code ---

Die Java library mit den entsprechenden Pam4ProjectWSA Klassen ist vorhanden und auch eingebunden.

Hat irgendjemand eine Ahnung warum diese Meldung kommt und wie man die abstellen kann?

Thomas Schulte:
Und noch eine Information.
Das Teil muss zwingend auf dem Notes Client laufen.

Tode:
Wahrscheinlich musst Du die java.policy auf dem Client anpassen... Schau mal hier im Forum, da gab es schon einige Threads dazu... Und irgendwas war noch, dass man statt der java.policy eine andere Datei benutzen soll, weil die java.policy bei jedem update überschrieben wird...

Werner Götz:
Diese Sicherheitseinstellungen werden doch über die Datei
    java.policy
im Verzeichnis (abh. vom Installationspfad ...)
    C:\Programm Files\IBM\Lotus\Notes\jvm\lib\security
gesteuert?

Hast Du das dort schon mal überprüft? Die JVM muss bei Änderungen wohl evtl. durchgestartet werden ...

D.h. auch wenn Du die richtigen Einstellungen findest, musst Du später dafür sorgen, dass das auf allen Clients richtig gesetzt ist !?!

-Werner

Ralf_M_Petter:
Die richtige Erlaubnis für das Policy file müsste permission java.util.logging.LoggingPermission "control";

Wenn du dies unter den "default permissions granted to all domains" einträgst, sollte es gehen. Eine andere Möglichkeit wäre es die jar die den kritischen Code enthält in das ext Verzeichnis der JVM des Clients zu deployen. Dann sollte es auch funktionieren.

Grüße

Ralf

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln