Search the FirstSpirit Knowledge Base
Hallo Community,
habe versucht den Ansatz von folgendem Beitrag ContentCreator: Service aus Workflow starten nachzuvollziehen.
Komme jedoch nicht weiter auch nicht mit den Beispielen aus dem MDEV_modexamples Projekt.
Hat hierzu jemand ein Beispielprojekt und kann weiterhelfen?
Bzw. gibt es einen anderen Ansatz um aus dem ContentCreator einen Service aufzurufen?
Wichtig wäre es Parameter übergeben zu können und auch Rückgabewerte zu erhalten.
Aktuell funktioniert das über den Aufruf
#global.getConnection().getService("ServiceModule")
nur über den SiteArchitect und nicht über den ContentCreator.
Danke & Gruß
Hüseyin Sener
Hallo Hüseyin,
die Antwort von Tim in dem von dir verlinkten Beitrag beschreibt ziemlich gut, was nötig ist, um einen Service aus dem Kontext des ContentCreators aufzurufen. Wichtig ist auch Schritt 3, bzw. das du die Komponente auch der WebApplikation hinzufügst und zwar im ServerAdmin. Entweder der globalen ContentCreator Instanz oder der projektlokalen ContentCreator Instanz.
Liebe Grüße, Peter
Guten Morgen Peter,
beim installieren der Web-Anwendung erhalte ich folgenden Fehler im ServerManager
Fehler beim Installieren der FSM-Datei!
java.lang.IllegalArgumentException: invalid module xml, unknown component <resources>! - module:ClientService
In meiner module.xml sieht es folgendermaßen aus
<?xml version="1.0" encoding="UTF-8"?>
<module>
<name>ClientService</name>
<components>
<web-app scopes="global, project">
<name>ClientServiceWebApp</name>
<web-xml>META-INF/web.xml</web-xml>
<web-resources>
<resource>lib/${project.artifactId}-${project.version}-global-jar-with-dependencies.jar</resource>
<resource>lib/${project.artifactId}-${project.version}-local-jar-with-dependencies.jar</resource>
</web-resources>
</web-app>
<service>
<name>ClientServiceModule</name>
<class>xy.ClientServiceImpl</class>
<resources>
<resource>META-INF/client-service.conf</resource>
</resources>
</service>
<resources>
<resource scope="server">lib/${project.artifactId}-${project.version}-global-jar-with-dependencies.jar</resource>
<resource scope="module">lib/${project.artifactId}-${project.version}-local-jar-with-dependencies.jar</resource>
</resources>
</components>
</module>
Gruß
Hüseyin
Hallo Hüseyin,
der Abschitt "<resources>" ist auf der falschen Ebene, der gehört eine Ebene höher.
LG, Peter
Hallo Peter,
die Ressourcen außerhalb der Komponenten zu verschieben hat schonmal geholfen. Wenn ich nun versuche im ServerManager unter Web-Applikationen > ContentCreator die Web-App hinzufüge und installiere erhalte ich einen ClassCastException
ERROR 08.07.2020 13:44:22.927 (de.espirit.firstspirit.server.module.ServiceManagerImpl): cannot install service, module=ClientService, version=2.3, componentClass=de.xy.clientplugin.ClientServiceImpl
FSVersion=5.2.200312.78911#5561;JDK=1.8.0_222 64bit AdoptOpenJDK;OS=Windows 10 10.0 amd64;Date=08.07.2020 13:44:22
java.lang.ClassCastException: de.xy.clientplugin.ClientServiceImpl cannot be cast to de.espirit.firstspirit.module.Service
at de.espirit.firstspirit.server.module.ServiceWrapperImpl.create(ServiceWrapperImpl.java:63)
at de.espirit.firstspirit.server.module.ServiceManagerImpl.registerServiceWrapper(ServiceManagerImpl.java:447)
at de.espirit.firstspirit.server.module.ServiceManagerImpl.registerService(ServiceManagerImpl.java:420)
at de.espirit.firstspirit.server.module.ServiceManagerImpl.restartServices(ServiceManagerImpl.java:388)
at de.espirit.firstspirit.server.module.ServiceManagerImpl.fireModuleUpdated(ServiceManagerImpl.java:321)
at de.espirit.firstspirit.server.module.ServiceManagerImpl.access$200(ServiceManagerImpl.java:54)
at de.espirit.firstspirit.server.module.ServiceManagerImpl$1.onEvent(ServiceManagerImpl.java:83)
at de.espirit.firstspirit.server.module.ServiceManagerImpl$1.onEvent(ServiceManagerImpl.java:71)
at de.espirit.firstspirit.server.event.EventManagerImpl.fireEventNow(EventManagerImpl.java:444)
at de.espirit.firstspirit.server.event.EventManagerImpl.fireEvent(EventManagerImpl.java:118)
at de.espirit.firstspirit.server.module.ModuleManagerImpl.fireEvent(ModuleManagerImpl.java:2360)
at de.espirit.firstspirit.server.module.ModuleManagerImpl.activate(ModuleManagerImpl.java:1989)
at de.espirit.firstspirit.server.module.ModuleManagerImpl.loadActivate(ModuleManagerImpl.java:529)
at de.espirit.firstspirit.server.module.ModuleManagerImpl.install(ModuleManagerImpl.java:616)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at de.espirit.firstspirit.io.DefaultServerHandler.callManager(DefaultServerHandler.java:67)
at de.espirit.firstspirit.server.io.handler.ManagerCall.doCall(ManagerCall.java:141)
at de.espirit.firstspirit.server.io.handler.ManagerCall.handle(ManagerCall.java:86)
at de.espirit.firstspirit.server.io.MessageWorker.run(MessageWorker.java:50)
at de.espirit.firstspirit.server.ExecutionManagerImpl$RunnableWrapper.call(ExecutionManagerImpl.java:627)
at de.espirit.firstspirit.server.ExecutionManagerImpl$ExtendedCallable.call(ExecutionManagerImpl.java:592)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at de.espirit.common.util.BoundedExecutorService$RunnableWrapper.run(BoundedExecutorService.java:436)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
at de.espirit.common.util.SuspendableThread.run(SuspendableThread.java:56)
Woran könnte das liegen?
Danke & Gruß
Hüseyin Sener
Hi Hüseyin,
die Fehlermeldung besagt, das deine Service-Klasse (xy.ClientServiceImpl) nicht das benötigte Interface von FirstSpirit implementiert.
Liebe Grüße,
Peter
Hallo Peter,
besteht die Möglichkeit z.B. bei den Tutorials, ein funktionierendes Minimalbeispiel zum Download zur Verfügung zu stellen, in dem ein Service sowohl im Site-Architekt, als auch im Content Creator aufrufbar ist?
Basierend darauf könnte man das glaube am einfachsten nachbauen / anpassen.
Viele Grüße und besten Dank,
Matthias