Search the FirstSpirit Knowledge Base
Hallo zusammen,
ich benötige dringend Eure Unterstützung.
Ich befülle eine Combobox über einen GomIncludeValueProvider
CMS
<CMS_INPUT_COMBOBOX name="sv_slot_name" editable="no" hFill="yes" singleLine="no" useLanguages="no">
<CMS_INCLUDE_OPTIONS type="public">
<NAME>SlotNames</NAME>
</CMS_INCLUDE_OPTIONS>
<LANGINFOS>
<LANGINFO lang="*" label="Slot"/>
</LANGINFOS>
</CMS_INPUT_COMBOBOX>
Module.xml
<public>
<name>SlotNames</name>
<displayname>Slot Names Service</displayname>
<description>Service which returns a list of slot Names</description>
<class>xxx.service.serviceImpl.SlotNameProviderService</class>
</public>
Die Pflege und auch die Generierung funktionieren tadellos.
Allerdings sieht das bei der internen Vorschau / bzw. wenn ich das Auge zur Darstellung im Browser klicke ganz anders aus.
Hier bekomme ich nämlich einen Error und einen Stacktrace
14.11.2019 13:12:07.749 ERROR (): java.lang.IllegalStateException: loading of public type 'SlotNames' failed, type de.espirit.firstspirit.access.store.templatestore.gom.GomIncludeValueProvider
FSVersion=5.2.180806.77558#5617;JDK=1.8.0_191 64bit Oracle Corporation;OS=Linux 4.1.38-50-default amd64;Date=14.11.2019 13:03:19 java.lang.IllegalStateException: loading of public type 'SlotNames' failed, type de.espirit.firstspirit.access.store.templatestore.gom.GomIncludeValueProvider at de.espirit.firstspirit.server.module.ModuleManagerProxy$ClientModuleManager.getPublicClass(ModuleManagerProxy.java:245) at de.espirit.firstspirit.agency.ModuleAgentImpl.getTypeForName(ModuleAgentImpl.java:41) at de.espirit.firstspirit.access.store.templatestore.gom.HotspotValueProvider.getValueProvider(HotspotValueProvider.java:59) at de.espirit.firstspirit.access.store.templatestore.gom.HotspotValueProvider.getValueProvider(HotspotValueProvider.java:53) at de.espirit.firstspirit.access.store.templatestore.gom.HotspotValueProvider.getValues(HotspotValueProvider.java:46) at de.espirit.firstspirit.access.store.templatestore.gom.GomIncludeOptions$ListOptionAdapter.getValues(GomIncludeOptions.java:318) at de.espirit.firstspirit.access.store.templatestore.gom.GomIncludeOptions$ListOptionAdapter.size(GomIncludeOptions.java:334) at java.util.AbstractList$Itr.hasNext(AbstractList.java:351) at de.espirit.firstspirit.client.access.editor.ListOptionModel.(ListOptionModel.java:43) at de.espirit.firstspirit.client.access.editor.ListOptionModel.(ListOptionModel.java:35) at
...
Wenn ich das Modul auf meinem Lokalen FS Server installiere habe ich diese Probleme nicht. Nur auf dem Produktivsystem
Ich habe bereits alle Configs im Servermanager verglichen, sowohl globale als auch projektspezifische.
Hat jemand eine Idee wo das Problem noch hängen könnte, welche Config ich übersehen haben könnte?
Der ganze Spaß muss noch im Content Creator funktionieren. Da habe ich das bisher noch nicht getestet.
Danke und Gruß
Matthias
Hallo Michael,
nach einiger Zeit des nichts Tun hat sich das Problem von alleine behoben.
Die einzige Änderung, die in den letzten Tagen passierte, ist das der Server neu gestartet wurde.
Der Neustart muss das Problem gelöst haben.
ich verstehe zwar die Logik dahinter kein bisschen, aber hey, solange es funktioniert.
Ich danke trotzdem sehr für Deine Unterstützung.
Gruß
Matthias
Hallo Matthias,
die Ressource wird aber über eine <webApp>-Komponente in die Vorschau-WebApp deployt oder? Die beiden FS-Versionen (lokal vs. Produktiv) sind gleich? Nutzt Du ggf. lokal den internen Jetty und auf dem Produktivsystem einen Tomcat?
Bitte poste doch auch mal die relevanten Teile der module.xml.
Viele Grüße
Michael
Hallo Michael,
<?xml version="1.0" encoding="UTF-8"?>
<module>
<name>Some Module Name</name>
<version>${project.version}</version>
<description>Service which fetches its content from some other Services</description>
<vendor>Firma xy</vendor>
<components>
<service>
<name>someService</name>
<description>Service for fetching data</description>
<class>xxx.service.serviceImpl.DataProviderServiceImpl</class>
<resources>
<resource name="some-service">lib/${project.artifactId}-${project.version}-jar-with-dependencies.jar</resource>
</resources>
</service>
<public>
<name>SlotNames</name>
<displayname>Slot Names Service</displayname>
<description>Service which returns a list of slot Names</description>
<class>xxx.service.serviceImpl.SlotNameProviderService</class>
</public>
</components>
</module>
Der SlotNameProviderService.class ist dann eine ganz einfache Klasse, der die Interface-Funktionen vom GomIncludeValueProvider implementiert.
* Lokal wie produktiv wird derzeit der interne Jetty verwendet.
Danke und Gruß
Matthias
Hallo Matthias,
bitte versuche es mal mit einer <webApp>-Komponente, so dass die Klasse(n) auch in der Preview-WebApp verfügbar sind. In der CC-WebApp wirst Du sie wohl auch brauchen.
Viele Grüße
Michael
Hallo Michael,
gibt es eine Doku, wie ich eine Web-App korrekt erstelle?
So wie es aussieht brauche ich ja auch eine web.xml
Ich habe keine Ahnung wie die im FirstSpirit Umfeld aussehen muss, dass mein Modul funktioniert.
Gruß
Matthias
Hallo Matthias,
da in diesem Fall die WebApp-Komponente nur dazu dient, jar-Ressourcen mitzubringen ist die extrem simpel. Hier mal am Beispiel anhand von Ausschnitten der Advanced Schulung (DTA):
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>DTA WebApp</display-name>
</web-app>
In der Module.xml sieht das dann so aus:
<module>
...
<components>
...
<web-app scopes="global,project">
<name>SomeName</name>
<web-resources>
<resource name="..." version="...">lib/${project.artifactId}-${project.version}-jar-with-dependencies.jar</resource>
</web-resources>
<web-xml>web/web.xml</web-xml>
</web-app>
...
</components>
...
</module>
Der Pfad der bei <web-xml> steht ist dabei der Pfad innerhalb des FSMs. Die scopes steuern, ob man die WebApp-Komponente nur projektlokalen oder auch den "allgemeinen" WebApps hinzufügen kann oder beides.
Du musst dann natürlich die WebApp-Komponente auch den passenden WebApps hinzufügen über den ServerManager.
Viele Grüße
Michael
Hallo Michael,
nach einiger Zeit des nichts Tun hat sich das Problem von alleine behoben.
Die einzige Änderung, die in den letzten Tagen passierte, ist das der Server neu gestartet wurde.
Der Neustart muss das Problem gelöst haben.
ich verstehe zwar die Logik dahinter kein bisschen, aber hey, solange es funktioniert.
Ich danke trotzdem sehr für Deine Unterstützung.
Gruß
Matthias
Hallo Matthias,
es kann sein dass das trotzdem auftritt wenn ihr irgendwann auf einen Tomcat wechselt - der Jetty ist ja für den Produktivbetrieb eh nicht empfohlen und der interne Jetty sogar abgekündigt. Speziell der interne verhält sich teilweise etwas anders was das ClassLoading betrifft.
Aber dann weißt Du ja jetzt was zu tun ist 😉
Viele Grüße
Michael