Martin_Dirlewan
Returning Observer

FS 5 WebEdit eigene Komponente java.lang.NoClassDefFoundError: de/espirit/firstspirit/webedit/server/gadgets/GwtServerGadgetFactory

Hallo zusammen,

ich versuche momentan eine eigene Eingabe Komponente im WebEdit zum laufen zu bringen.

Ich habe mir hierzu die bestehende Implementation der normlen Combobox angeschaut, hier wird eine zweite Factory in der module.xml eingehängt die für WebEdit (ServerGadgetFactory) verwendet wird.

Leider erhalte ich eine java.lang.NoClassDefFoundError: de/espirit/firstspirit/webedit/server/gadgets/GwtServerGadgetFactory für das Interface das die create Methode implementiert.

Die Jar (fs-webedit.jar) die diese Klasse beinhaltet liegt aber im WebEdit Context des Projekts.

FS Version: 5.0.425.60000

Java Version: 1.7.0_51

Factory für WebEdit:

public class TestComboboxServerGadgetFactory

implements GwtServerGadgetFactory<TestGomCombobox, ComboboxConfiguration>

{

      /* (non-Javadoc)

      * @see de.espirit.firstspirit.webedit.server.gadgets.GwtServerGadgetFactory#create(de.espirit.firstspirit.module.GadgetContext)

      */

      public GwtServerGadget<ComboboxConfiguration> create(GadgetContext<TestGomCombobox> context)

      {

            return new TestComboboxServerGadget(context);

      }

}

Fehler aus der Server Log:

WARN 10.02.2014 22:02:50.985 (/fs5webedit_11): Exception while dispatching incoming RPC call

FSVersion=5.0.425.60000#3442;JDK=1.7.0_51 64bit Oracle Corporation;OS=Linux 2.6.32-279.el6.x86_64 amd64;Date=10.02.2014 22:02:50

  1. com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract de.espirit.firstspirit.webedit.client.forms.FormSessionDTO de.espirit.firstspirit.webedit.client.forms.StoreElementFormService.loadForm(de.espirit.firstspirit.webedit.client.store.FSID,de.espirit.firstspirit.webedit.client.io.EditorNodeWrapper,java.lang.String) throws de.espirit.firstspirit.webedit.client.store.PermissionException,de.espirit.firstspirit.webedit.client.util.ServiceFailedException' threw an unexpected exception: java.lang.NoClassDefFoundError: de/espirit/firstspirit/webedit/server/gadgets/GwtServerGadgetFactory

at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:385)

at de.espirit.firstspirit.webedit.server.control.PollSupportingWebeditService.logAndEncodeThrowable(PollSupportingWebeditService.java:141)

at de.espirit.firstspirit.webedit.server.control.PollSupportingWebeditService.processCall(PollSupportingWebeditService.java:102)

at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)

at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)

at de.espirit.firstspirit.webedit.server.WebeditService.service(WebeditService.java:77)

at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:598)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1367)

at de.espirit.firstspirit.io.servlet.WebAuthentication.doChain(WebAuthentication.java:672)

at de.espirit.firstspirit.webedit.server.ServiceAuthentication.doChain(ServiceAuthentication.java:27)

at de.espirit.firstspirit.io.servlet.WebAuthentication.doFilter(WebAuthentication.java:535)

at de.espirit.firstspirit.io.servlet.WebAuthentication.doFilter(WebAuthentication.java:151)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1338)

at de.espirit.firstspirit.webedit.server.BrowserCachingFilter.doFilter(BrowserCachingFilter.java:33)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1338)

at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:484)

at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)

at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)

at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:233)

at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1065)

at de.espirit.firstspirit.server.jetty.JettyManagerImpl$FailSafeWebAppContext.doHandle(JettyManagerImpl.java:839)

at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:413)

at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192)

at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:999)

at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)

at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250)

at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149)

at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111)

at org.eclipse.jetty.server.Server.handle(Server.java:350)

at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:454)

at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:900)

at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:954)

at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:851)

at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)

at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:77)

at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:606)

at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:46)

at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:603)

at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:538)

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

Caused by: java.lang.NoClassDefFoundError: de/espirit/firstspirit/webedit/server/gadgets/GwtServerGadgetFactory

at java.lang.ClassLoader.defineClass1(Native Method)

at java.lang.ClassLoader.defineClass(ClassLoader.java:800)

at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)

at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)

at java.net.URLClassLoader.access$100(URLClassLoader.java:71)

at java.net.URLClassLoader$1.run(URLClassLoader.java:361)

at java.net.URLClassLoader$1.run(URLClassLoader.java:355)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:354)

at de.espirit.firstspirit.server.module.ExtendedUrlClassLoader.findClass(ExtendedUrlClassLoader.java:90)

at java.lang.ClassLoader.loadClass(ClassLoader.java:425)

at java.lang.ClassLoader.loadClass(ClassLoader.java:358)

at de.espirit.firstspirit.server.module.MutableClassLoader.findClass(MutableClassLoader.java:129)

at java.lang.ClassLoader.loadClass(ClassLoader.java:425)

at java.lang.ClassLoader.loadClass(ClassLoader.java:412)

at java.lang.ClassLoader.loadClass(ClassLoader.java:358)

at de.espirit.firstspirit.server.module.MutableClassLoader.loadClass(MutableClassLoader.java:121)

at de.espirit.firstspirit.module.GadgetSpecification.getGadgetFactory(GadgetSpecification.java:108)

at de.espirit.firstspirit.webedit.server.gadgets.GwtServerGadgets.create(GwtServerGadgets.java:115)

at de.espirit.firstspirit.webedit.server.gadgets.ValueSerializingGwtServerGadgetMediator.<init>(ValueSerializingGwtServerGadgetMediator.java:114)

at de.espirit.firstspirit.webedit.server.gadgets.ValueSerializingGwtServerGadgetMediator._create(ValueSerializingGwtServerGadgetMediator.java:144)

at de.espirit.firstspirit.webedit.server.gadgets.ValueSerializingGwtServerGadgetMediator.create(ValueSerializingGwtServerGadgetMediator.java:137)

at de.espirit.firstspirit.webedit.server.gadgets.GwtServerGadgetMediatorFactory.create(GwtServerGadgetMediatorFactory.java:27)

at de.espirit.firstspirit.webedit.server.gadgets.AggregatingGwtServerGadgetMediator.getMediators(AggregatingGwtServerGadgetMediator.java:165)

at de.espirit.firstspirit.webedit.server.gadgets.AggregatingGwtServerGadgetMediator.load(AggregatingGwtServerGadgetMediator.java:113)

at de.espirit.firstspirit.webedit.server.gadgets.GwtFormControl.load(GwtFormControl.java:54)

at de.espirit.firstspirit.webedit.server.forms.FormSessionManager.loadSession(FormSessionManager.java:218)

at de.espirit.firstspirit.webedit.server.forms.StoreElementFormServiceImpl.loadForm(StoreElementFormServiceImpl.java:113)

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

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

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

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

at de.espirit.firstspirit.webedit.server.control.PollSupportingWebeditService$RPCInvoke.call(PollSupportingWebeditService.java:183)

at de.espirit.firstspirit.webedit.server.control.PollSupportingWebeditService$ServiceCallPollFeedWrapper.call(PollSupportingWebeditService.java:296)

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

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

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

... 1 more

Caused by: java.lang.ClassNotFoundException: de.espirit.firstspirit.webedit.server.gadgets.GwtServerGadgetFactory

at java.net.URLClassLoader$1.run(URLClassLoader.java:366)

at java.net.URLClassLoader$1.run(URLClassLoader.java:355)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:354)

at de.espirit.firstspirit.server.module.ExtendedUrlClassLoader.findClass(ExtendedUrlClassLoader.java:90)

at java.lang.ClassLoader.loadClass(ClassLoader.java:425)

at java.lang.ClassLoader.loadClass(ClassLoader.java:358)

   ... 38 more


Grüße und Danke für eure Hilfe oder Hinweise

Martin

8 Replies
klein
Crownpeak employee

Hallo Martin,

>Die Jar (fs-webedit.jar) die diese Klasse beinhaltet liegt aber im WebEdit Context des Projekts.


ist diese Datei wirklich aktuell? Hat sie also die Größe von 26.367.443 Bytes? Ggf. die Datei nochmal manuell überschreiben (aus dem bekannten FS-Downloadverzeichnis \updateFS50\5.0.425\misc\fs-webedit.jar oder aus {fs-server}/data/fslib/fs-webedit.jar)

Gruß,

Walter.

0 Kudos

Hallo Walter,

danke für den Hinweis, leider gibt es die fs-webedit.jar nicht im misc Ordner nur die fs-webrt.jar.

Die Größe dieser Jar unterscheidet sich von meiner fs-webrt.jar (26.367.450), ich habe diese ausgetauscht aber leider ist das Problem noch vorhanden.

In dieser Jar Datei ist die angefordnerte Klasse auch nicht enthalten diese liegt in fs-webedit.jar nicht fs-webrt.jar.

Wenn ich die normale FS Combobox verwende funktioniert diese im WebEdit.

Ist eventuell eine Definition in dier module.xml falsch?

Werden eigene Eingabekomponenten in WebEdit unterstützt?

Module.xml:

<public>

            <name>CMS_CUSTOM_INPUT_COMBOBOX</name>

            <description>CUSTOM COMBOBOX Editor Comp</description>

            <class>de.espirit.firstspirit.module.GadgetSpecification</class>

            <resources>

                <resource>lib/custom.jar</resource>

            </resources>

            <configuration>

                <gom>de.custom.module.editors.comboBox.gom.TestGomCombobox</gom>

                <factory>de.custom.module.editors.comboBox.factory.TestComboboxSwingGadgetFactory</factory>

                <factory>de.custom.module.editors.comboBox.factory.TestComboboxServerGadgetFactory</factory>

                <value>de.custom.module.editors.comboBox.value.TestComboboxEditorValueImpl</value>

                <scope data="yes" content="yes" link="yes" style="yes" />

            </configuration>

        </public>

Grüße

Martin

0 Kudos

Hallo,

Frage an e-spirit.

Werden denn eigene Eingabekomponenten im WebEdit bei FS5 überhaupt unterstützt?

Gruß
David

0 Kudos

Hallo David,

Eingabekomponenten im WebEdit werden erst ab FirstSpirit 5.1 unterstützt. Die von dir verwendeten Klassen sind auch nicht in der API zu finden. Für 5.1 gibt es eine entsprechende API dafür.

0 Kudos

Gibt es für die Entwicklung von WebEdit Eingabekomponenten für FS 5.1 eine Dokumentation / ein Tutorial / ein Handbuch, und wenn ja, kannst du dieses Verlinken?

Gruß

Mathias

0 Kudos

Eine Dokumentation steht leider noch nicht zu Verfügung. Die Eigenentwicklung lässt sich nur zum Teil in Java realisieren, daher ist die API hier eine andere, als für die standardmäßig bereitgestellten Gadgets.

Falls dringend Handlungsbedarf besteht, eigene Gadgets für den ContentCreator zu erstellen, bitte den verantwortlichen Projektleiter / Kontakt bei e-Spirit ansprechen, um eine Lösung zu finden.

Beste Grüße

Stefan

0 Kudos

Hallo zusammen,

ist eine Dokumentation mittlerweile veröffentlicht?

Viele Grüße

Stefan Müller

Hallo,

ja, es gibt Dokumentation zum Thema. Die findet sich im ODFS im Unterpunkt zur Plugin-Entwicklung/Universelle Erweiterungen/Eingabekomponenten/ContentCreator-Gadget. Online zu finden hier:

http://www.e-spirit.com/odfs52/plugin-entwickl/universelle-erw/eingabekomponen/contentcreator/

Falls die Dokumentation nicht ausreicht, bitte nachfragen.

Beste Grüße

Stefan

0 Kudos