kernberger
I'm new here

Datei erzeugen per Vorlagenscript (java.lang.SecurityException)

Hallo,

ich habe folgendes Problem:

ich möchte per Vorlagenscript (Aufruf über CMS_RENDER) eine Datei in der Medienverwaltung speichern.

Folgender Code funktioniert in einem Menüskript, in einem Vorlagenskript bekomme ich aber eine "java.lang.SecurityException: read only store"

    try {

        // create file to write the xml string

        String today = new SimpleDateFormat("yyyy-MM-dd").format(new Date());

        String xmlName = selectedMediaFolder.getUid() + today;

        mediaXml = selectedMediaFolder.get().createMedia(xmlName, xmlName, Media.FILE, false, true);

        // fill created media (write xml)

        mediaXml.setLock(true, true);

        byte[] xmlByteArray = xml.toString().getBytes("UTF-8");

        ByteArrayInputStream bais = new ByteArrayInputStream(xmlByteArray);

        mediaXml.getFile(lang).setFile(xmlByteArray.length, bais, ".xml");

        mediaXml.save();

    }

    catch (ElementDeletedException e) {

        e.printStackTrace();

    }

    catch (LockException e) {

        e.printStackTrace();

    }

    catch (IOException e) {

        e.printStackTrace();

    }

    finally {

        try {

            mediaXml.setLock(false, true);

        }

        catch (LockException e) {

            e.printStackTrace();

        }

        catch (ElementDeletedException e) {

            e.printStackTrace();

        }

    }

Hat irgend jemand eine Idee woran das liegen könnte?

Danke

0 Kudos
4 Replies
gockel
Crownpeak employee

"java.lang.SecurityException: read only store"

Vorlagenskripte werden innerhalb der Generierung ausgeführt und wie die Fehlermeldung schon sagt, wird bei der Generierung ein "read-only-store" verwendet, der auf den Startzeitpunkt der Generierung eingefroren ist. Es können also grundsätzlich keine verändernden Operationen an FS-Entitäten während der Generierung vorgenommen werden.

Können Sie den dahinterstehenden Anwendungsfall vielleicht beschreiben.

0 Kudos

Danke für die schnelle Antwort!

Wir möchten aus den Datei-Informationen (Bilder) in einem Medienordner eine XML-Datei erzeugen.

- Unter anderem soll die URL zu den Bildern im XML gespeichert werden.

- Die XML soll im gewählten Ordner gespeichert werden.

- Der Medien-Ordner soll vom Redakteur ausgewählt werden.

Erster Ansatz war ein Menüskript zu schreiben. Das Problem war hier, dass ich keinen Weg gefunden habe über ein Menüskript (bzw. den entsprechenden Context) an die Bild-URL ranzukommen.

Da man über den GenerationContext an den URLCreator rankommt etc. war der nächste Ansatz ein Vorlagenscript zu erstellen, welches  dann per CMS_RENDER aufgerufen wird, um eben bei der Generierung die XML-Datei zu erzeugen.

Gibt es denn generell eine Möglichkeit per Menü- oder Kontext-Skript an die URLs ranzukommen?

0 Kudos

Hallo,

wir haben etwas ähliches gelöst.

Nach einer Generierung mit anschließender Veröffentlichung wird eine Medium angelegt (mit Textinhalt). Das funktioniert bestens.

Allerdings wird das bei uns über einen Auftrags-Script ausgeführt. Ich vermute, dass Du da an alles notwendige herankommst.

Event. wäre das eine Alternative für Dich.

Hinweis: Das Script muss unter einem User ausgeführt werden, der in allen Medienordnern Schreibrechte hat.

Hallo,

danke, das wäre eine Möglichkeit, wir haben es nun so gelöst, dass wir weiterhin ein Vorlagenskript verwenden, den Dateinhalt aber im Speicher halten, und somit ein Zugriff auf den Medien-Store nicht mehr notwendig ist.

0 Kudos