HSener
I'm new here

Service im ContentCreator verfügbar machen evtl. mit Beispielprojekt

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

0 Kudos
6 Replies
Peter_Jodeleit
Crownpeak employee

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

Peter
0 Kudos

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

0 Kudos

Hallo Hüseyin,

der Abschitt "<resources>" ist auf der falschen Ebene, der gehört eine Ebene höher.

LG, Peter

Peter
0 Kudos

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

0 Kudos

Hi Hüseyin,

die Fehlermeldung besagt, das deine Service-Klasse (xy.ClientServiceImpl) nicht das benötigte Interface von FirstSpirit implementiert.

Liebe Grüße,

Peter

Peter
0 Kudos

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

0 Kudos