matthiasforberg
Occasional Collector

DisplayNames setzen per Serverskript?

Jump to solution

Hallo,

ich habe die ehrenvolle Aufgabe, in einem Projekt mehrere Tausend Anzeigenamen von PageFolders umzubenennen. Das Skript steht soweit und ist auch alles wunderbar, aber da das über ein VPN läuft, dauert die Ausführung seeeeeehr lange!

Jetzt habe ich mir gedacht, es wäre eine pfiffige Idee, das ganze leicht umzubauen und in der Auftragsverwaltung als Serverskript laufen zu lassen.

Leider bricht es beim ersten Lock gleich ab und schmeißt mir die folgende Exception (siehe unten).

Kann man das nur im JavaClient machen? Oder was ist die Ursache? Kann man das umgehen? Vielleicht als Admin ausführen?

Danke und Grüße

Matthias

...übrigens e = context.userService.getStore(Store.Type.PAGESTORE,true,false);

und hier die Exception:

ERROR 23.11.2013 23:33:45.629 {seID=5659875} (de.espirit.firstspirit.server.scheduler.ScriptTaskExecutor): error during script execution : de.espirit.firstspirit.access.script.ExecutionException: Method Invocation e.setLock at line 33

de.espirit.firstspirit.access.script.ExecutionException: Method Invocation e.setLock at line 33

    at de.espirit.firstspirit.server.script.BeanshellScriptEngine$BeanshellExecutable.execute(BeanshellScriptEngine.java:120)

    at de.espirit.firstspirit.common.ScriptUtil.execute(ScriptUtil.java:88)

    at de.espirit.firstspirit.server.scheduler.ScriptTaskExecutor.run(ScriptTaskExecutor.java:119)

    at de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl$TaskCallable.executeLocal(ScheduleManagerImpl.java:2021)

    at de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl$TaskCallable.executeLocal(ScheduleManagerImpl.java:2001)

    at de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl$TaskCallable.call(ScheduleManagerImpl.java:1929)

    at de.espirit.firstspirit.server.ExecutionManagerImpl$ExtendedCallable.call(ExecutionManagerImpl.java:520)

    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)

    at java.util.concurrent.FutureTask.run(FutureTask.java:138)

    at de.espirit.common.util.BoundedExecutorService$RunnableWrapper.run(BoundedExecutorService.java:419)

    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)

    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)

    at java.util.concurrent.FutureTask.run(FutureTask.java:138)

    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)

    at java.lang.Thread.run(Thread.java:680)

    at de.espirit.common.util.SuspendableThread.run(SuspendableThread.java:36)

Caused by: java.lang.SecurityException: changes not allowed for current connection

    at de.espirit.firstspirit.server.scheduler.RestrictedTaskSecurityManager.checkAccess(RestrictedTaskSecurityManager.java:28)

    at de.espirit.firstspirit.store.access.AbstractStoreElement.checkAccess(AbstractStoreElement.java:1596)

    at de.espirit.firstspirit.store.access.DefaultStoreElement.setLock(DefaultStoreElement.java:440)

    at de.espirit.firstspirit.store.access.DefaultStoreElement.setLock(DefaultStoreElement.java:432)

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

    at java.lang.reflect.Method.invoke(Method.java:597)

    at bsh.Reflect.invokeMethod(Unknown Source)

    at bsh.Reflect.invokeObjectMethod(Unknown Source)

    at bsh.Name.invokeMethod(Unknown Source)

    at bsh.BSHMethodInvocation.eval(Unknown Source)

    at bsh.BSHPrimaryExpression.eval(Unknown Source)

    at bsh.BSHPrimaryExpression.eval(Unknown Source)

    at bsh.BSHIfStatement.eval(Unknown Source)

    at bsh.BSHBlock.evalBlock(Unknown Source)

    at bsh.BSHBlock.eval(Unknown Source)

    at bsh.BshMethod.invokeImpl(Unknown Source)

    at bsh.BshMethod.invoke(Unknown Source)

    at bsh.BshMethod.invoke(Unknown Source)

    at bsh.Name.invokeLocalMethod(Unknown Source)

    at bsh.Name.invokeMethod(Unknown Source)

    at bsh.BSHMethodInvocation.eval(Unknown Source)

    at bsh.BSHPrimaryExpression.eval(Unknown Source)

    at bsh.BSHPrimaryExpression.eval(Unknown Source)

    at bsh.BSHBlock.evalBlock(Unknown Source)

    at bsh.BSHBlock.eval(Unknown Source)

    at bsh.BshMethod.invokeImpl(Unknown Source)

    at bsh.BshMethod.invoke(Unknown Source)

    at bsh.BshMethod.invoke(Unknown Source)

    at bsh.This.invokeMethod(Unknown Source)

    at bsh.This.invokeMethod(Unknown Source)

    at de.espirit.firstspirit.server.script.BeanshellScriptEngine$BeanshellExecutable.execute(BeanshellScriptEngine.java:111)

    ... 16 more

0 Kudos
10 Replies

Jo danke, genau so habe ich es jetzt auch gemacht, oder so ähnlich. Ich mag ja die kürzere Bean-Schreibweise:

pid = context.project.id;

project = connection.getProjectById(pid);

Auf jeden Fall vielen Dank an alle, die mir geholfen haben. Immer wieder toll, was man nach 9 Jahren FirstSpirit noch Neues lernen kann. Und wie einfach es dann ist, wenn man weiß, wie es geht... Smiley Happy

Grüße

Matthias

0 Kudos