Questions & Answers

SOLVED
pollehn
I'm new here

Zeitlich gesteuerte Aktualisierung von Dateien im Mediastore

Jump to solution

Hallo zusammen,

ich wรผrde gern mit Hilfe der Auftragsverwaltung einen Task anlegen, welcher eine zeitlich gesteuerte Aktualisierung einer JSON-Datei im Mediastore realisiert. Fรผr diesen Zweck habe ich ein kleines Plugin entwickelt, welches ich als Bibliothek serverweit bekannt gemacht habe. Den Aufruf der Bibliothek habe ich mittels Beanshell Skript getestet und konnte damit verifizieren, dass die Bibliothek das tut was sie soll.

Wenn ich jetzt allerdings versuche das Ganze in der Auftragsverwaltung meines Projektes als Aktion auszufรผhren, kommt es zu einer SecurtyException.

Nachfolgend einmal der (scheinbar) problematische Code und Fehlerlog:

ScheduleContext scheduleContext = (ScheduleContext) context;

StoreAgent storeAgent = context.requestSpecialist(StoreAgent.TYPE);

if (storeAgent != null) {

    Store mediaStore = storeAgent.getStore(Store.Type.MEDIASTORE);

    MediaImpl medium = (MediaImpl) mediaStore.getStoreElement(jsonMediaId, IDProvider.UidType.MEDIASTORE_LEAF);

    {...}

    medium.setLock(true, false);

    de.espirit.firstspirit.access.store.mediastore.File mFile = medium.getFile(scheduleContext.getProject().getMasterLanguage());

    mFile.setFile(jsonTempFile.length(), fis, "json");

    medium.setParseFile(false);

    medium.save("Aktualisierte JSON-Menรผstuktur", false);

    medium.setLock(false, false);

    {...}

}

ERROR 

  [โ€“] 04.03.2021 16:06:50 ERROR 04.03.2021 16:06:50.648 {uID=0,seID=145005,pID=113297} (de.espirit.firstspirit.server.scheduler.ScriptTaskExecutor): error during script execution : de.espirit.firstspirit.access.script.ExecutionException: Method Invocation execute : at Line: 4 : in file: inline evaluation of: ``__execute() { //!Beanshell import de.adesso.firstspirit.intranet.maginal.Intrane . . . '' : .execute ( context )
Called from method: __execute
Target exception: java.lang.SecurityException: changes not allowed for current connection
at line 4
FSVersion=5.2.190910.78562;JDK=11.0.6 64bit Oracle Corporation;OS=Linux 3.10.0-1160.6.1.el7.x86_64 amd64;Date=04.03.2021 16:06:50 (I)
de.espirit.firstspirit.access.script.ExecutionException: Method Invocation execute : at Line: 4 : in file: inline evaluation of: ``__execute() { //!Beanshell import de.adesso.firstspirit.intranet.maginal.Intrane . . . '' : .execute ( context )
Called from method: __execute
Target exception: java.lang.SecurityException: changes not allowed for current connection
at line 4
  at de.espirit.firstspirit.server.script.BeanshellScriptEngine$BeanshellExecutable.execute(BeanshellScriptEngine.java:109)
  at de.espirit.firstspirit.server.script.PermissionsScriptEngine$PermissionsExecutable.lambda$execute$1(PermissionsScriptEngine.java:83)
  at java.base/java.security.AccessController.doPrivileged(Native Method)
  at de.espirit.firstspirit.server.script.PermissionsScriptEngine$PermissionsExecutable.execute(PermissionsScriptEngine.java:88)
  at de.espirit.firstspirit.server.script.PermissionsScriptEngine$PermissionsExecutable.execute(PermissionsScriptEngine.java:83)
  at de.espirit.firstspirit.common.ScriptUtil.execute(ScriptUtil.java:106)
  at de.espirit.firstspirit.server.scheduler.ScriptTaskExecutor.run(ScriptTaskExecutor.java:127)
  at de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl$TaskCallable.executeLocal(ScheduleManagerImpl.java:2506)
  at de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl$TaskCallable.executeLocal(ScheduleManagerImpl.java:2489)
  at de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl$TaskCallable.call(ScheduleManagerImpl.java:2421)
  at de.espirit.firstspirit.server.ExecutionManagerImpl$ExtendedCallable.call(ExecutionManagerImpl.java:590)
  at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
  at de.espirit.common.util.BoundedExecutorService$RunnableWrapper.run(BoundedExecutorService.java:436)
  at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
  at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
  at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
  at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
  at java.base/java.lang.Thread.run(Thread.java:834)
  at de.espirit.common.util.SuspendableThread.run(SuspendableThread.java:56)
Caused by: java.lang.SecurityException: changes not allowed for current connection
  at de.espirit.firstspirit.server.scheduler.RestrictedTaskSecurityManager.checkAccess(RestrictedTaskSecurityManager.java:29)
  at de.espirit.firstspirit.store.access.AbstractStoreElement.checkAccess(AbstractStoreElement.java:1443)
  at de.espirit.firstspirit.store.access.DefaultStoreElement.setLock(DefaultStoreElement.java:449)
  at de.espirit.firstspirit.store.access.DefaultStoreElement.setLock(DefaultStoreElement.java:441)
  at de.adesso.firstspirit.intranet.maginal.IntranetMaginalJsonCreatorExecutable.writeToMediastore(IntranetMaginalJsonCreatorExecutable.java:104)
  at de.adesso.firstspirit.intranet.maginal.IntranetMaginalJsonCreatorExecutable.execute(IntranetMaginalJsonCreatorExecutable.java:47)
  at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.base/java.lang.reflect.Method.invoke(Method.java:566)
  at bsh.Reflect.invokeMethod(Reflect.java:185)
  at bsh.Reflect.invokeObjectMethod(Reflect.java:118)
  at bsh.BSHPrimarySuffix.doName(BSHPrimarySuffix.java:176)
  at bsh.BSHPrimarySuffix.doSuffix(BSHPrimarySuffix.java:120)
  at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:80)
  at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47)
  at bsh.BSHBlock.evalBlock(BSHBlock.java:130)
  at bsh.BSHBlock.eval(BSHBlock.java:80)
  at bsh.BshMethod.invokeImpl(BshMethod.java:371)
  at bsh.BshMethod.invoke(BshMethod.java:267)
  at bsh.BshMethod.invoke(BshMethod.java:170)
  at bsh.PreparsedScript.invoke(PreparsedScript.java:66)
  at de.espirit.firstspirit.server.script.BeanshellScriptEngine$BeanshellExecutable.execute(BeanshellScriptEngine.java:100)
... 18 more

Gibt es etwas, was ich zur Realisierung meines Vorhabens noch beachten muss oder ist das eventuell einfach nicht mรถglich?

Vielen Dank schon mal fรผr eure Hilfe!

Viele GrรผรŸe

Richard

0 Kudos
1 Solution

Accepted Solutions
hoebbel
Crownpeak employee

Hallo Richard,

die Fehlermeldung "changes not allowed for current connection" deutet darauf hin, dass Du versuchst, die ร„nderungen mit der Session des Auftrags direkt durchzufรผhren. Das wird unterbunden.

Lรถsung: In der Skript-Aktion unter Eigenschaften den Haken "Eigene Verbindung" aktivieren und die Zugangsdaten von einem Benutzer verwenden, der ausreichend Rechte hat, um die entsprechenden ร„nderungen durchzufรผhren:

409217_pastedImage_0.png

Viele GrรผรŸe

Holger

View solution in original post

0 Kudos
2 Replies
hoebbel
Crownpeak employee

Hallo Richard,

die Fehlermeldung "changes not allowed for current connection" deutet darauf hin, dass Du versuchst, die ร„nderungen mit der Session des Auftrags direkt durchzufรผhren. Das wird unterbunden.

Lรถsung: In der Skript-Aktion unter Eigenschaften den Haken "Eigene Verbindung" aktivieren und die Zugangsdaten von einem Benutzer verwenden, der ausreichend Rechte hat, um die entsprechenden ร„nderungen durchzufรผhren:

409217_pastedImage_0.png

Viele GrรผรŸe

Holger

0 Kudos

Hallo Holger,

tausend Dank fรผr die schnelle Hilfe! Daran hat es tatsรคchlich gelegen. Smiley Happy

Viele GrรผรŸe

Richard

0 Kudos

Type a product name