Search the FirstSpirit Knowledge Base
Hallo,
wir haben hier eine webapp auf einem separaten Tomcat, die mittels fs-access.jar auf einen FirstSpirit-Server zugreift. Im Einsatz ist ein Workflow, der Skripte verlinkt, die ein Executable aufrufen. Wir waren nun ganz überrascht, dass der Code auf unserem Tomcat ausgeführt wird und nicht auf dem FS-Server. Hier der Stacktrace vom Breakpoint in einem static initializer unserer Klasse "StartEditingExecutable", die allerdings gar nicht in der webapp enthalten ist:
Das heißt, die Klassen werden irgendwie über einen remote class loading-Mechanismus über WorkflowAgentImpl - TaskImpl - ScriptImpl - ClassCallerEngine vom ModuleClassesLoader geladen.
Nun die Fragen:
1. Gibt es dazu Dokumentation?
2. Kann man erzwingen, dass dieser Code auf dem FS-Server ausgeführt wird und nicht fern?
Besten Dank und viele Grüße,
Heiko
Hallo Heiko,
den Einsatz einer WebApp die Executables ausführt habe ich bisher noch nicht umgesetzt.
Aber bei der FS-Modulentwicklung gibt es meiner Meinung nach eine Faustregel: Public- und Library-Komponenten (und die Executables werden wohl eine Public-Komponente sein) werden da ausgeführt wo sie aufgerufen werden. Will man erzwingen, dass der Code auf dem FS-Server ausgeführt wird ist eine Service-Komponente die richtige Wahl.
Ich mache es in meinem Modulen, die teilweise aus Skripten aus dem SiteArchitekt heraus aufgerufen werden, immer wie folgt:
Damit erzwinge ich, dass die teilweise rechenintensiven Operationen auf dem FS-Server und nicht im Executable im CLient ausgeführt werden.
Evtl. ist es ja auch ein Weg für deine WebApp einen FS-Service aufzurufen.
PS: Eine Doku zum Thema Classloading findest du im PDF" FirstSpirit Handbuch für Entwickler (Komponenten)". (http://[FS-Host]/help/odfs/Dokumentation/Fuer-Entwickler/)
Grüße
Sandro
Hallo Heiko,
den Einsatz einer WebApp die Executables ausführt habe ich bisher noch nicht umgesetzt.
Aber bei der FS-Modulentwicklung gibt es meiner Meinung nach eine Faustregel: Public- und Library-Komponenten (und die Executables werden wohl eine Public-Komponente sein) werden da ausgeführt wo sie aufgerufen werden. Will man erzwingen, dass der Code auf dem FS-Server ausgeführt wird ist eine Service-Komponente die richtige Wahl.
Ich mache es in meinem Modulen, die teilweise aus Skripten aus dem SiteArchitekt heraus aufgerufen werden, immer wie folgt:
Damit erzwinge ich, dass die teilweise rechenintensiven Operationen auf dem FS-Server und nicht im Executable im CLient ausgeführt werden.
Evtl. ist es ja auch ein Weg für deine WebApp einen FS-Service aufzurufen.
PS: Eine Doku zum Thema Classloading findest du im PDF" FirstSpirit Handbuch für Entwickler (Komponenten)". (http://[FS-Host]/help/odfs/Dokumentation/Fuer-Entwickler/)
Grüße
Sandro