restricted operations auf dem server

  • Und noch eine Frage von mir:


    Ich habe einen Agenten, welcher eine File einer Email in das Filesystem schreibt mittels:
    attachment.extractFile(out.txt);


    Der Agent arbeitet auf dem Server, automatisch nach Email Eingang. Leider gibt es hier jedoch probleme (vermutlich security?)


    1. wenn ich den Agenten mit meinem Namen signiere, dann bekomme ich eine Exception im Server Log: Disc i/o is a restricted operation...
    (habe gleich am Anfang des Agenten ein System.out.println stehen, welches im Log auftaucht - der Agent startet also wirklich)


    2. wenn ich den Agenten mit der ID des Servers signiere, dann wird der Agent zwar scheinbar gestartet, doch leider tut er nichts
    (habe gleich am Anfang des Agenten ein System.out.println stehen, welches im Log auftauchen muesste)


    Ausserdem weiss ich nciht ganz genau, wo das File eigentlich plaziert wird?! Im Verzeichnis der Datenbank auf dem Server oder nur im Data Verzeichnis der Datenbank (relative oder absolute Pfadangaben machen?)



    Vielen Dank fuer alle Hilfe



    Alternativ koennte ich das ganze umgestalten: der Agent soll ein File einer Email lesen, umschreiben und dann wieder per email versenden. Ich weiss zwar, wich ich das File von der Email lese, ohne auf HDD zwischenzuspeichern, aber ich weiss nicht, wie ich das File an eine Email anfuegen kann, ohne ein File zu haben (sondern nur ein FileWriter, BufferedFileWriter Object)


    File lesen:
    BufferedReader in = new BufferedReader(new InputStreamReader(attachment.getInputStream()));
    FileWriter fstream = new FileWriter(outFile);
    BufferedWriter out = new BufferedWriter(fstream);


    dann bearbeiten...


    und dann muesste ich das file irgendwie wieder an eine Email anfuegen, aber wie?
    body.embedObject(EmbeddedObject.EMBED_ATTACHMENT, null, outFile, "ReImportOrder");

  • Hallo,


    überprüfe mal folgende Security-Einstellungen:


    1. Server-Document, Tab "Security", Feld "Run unrestricted methods and operations"
    Hier sollte der Name des Agent-Signers drin stehen
    2. Dein Agent, Eigenschaften-Dialogbox, Tab "Security"
    Um Zugriffe aufs Filesystem zu erlauben, sollte unter Laufzeit-Sicherheitsstufe "2. Beschränkte Operationen zulassen" ausgewählt sein.


    Als Pfad für die Datei kommt beispielsweise der Temp-Ordner oder das Notes-Data-Verzeichnis in Frage.
    Den Temp-Ordner kannst Du mit

    Code
    System.getProperty("java.io.tmpdir");


    auslesen,


    das Notes-Data-Verzeichnis über

    Code
    session.getEnvironmentString("Directory");


    Gruß,
    GerdH