Search the FirstSpirit Knowledge Base
Hallo,
ich integriere in dem Formlar eines Templates einen FS_Button der ein Executable in einem eigens entwickelten Modul ausführen soll.
Im SiteArchitekt funktioniert es wunderbar nur im ContentCreator erhalte ich ein Popup mit der Meldung "WebEdit client error occurred: Status code detection: 500 The call failed on the server; see server log for details".
Im Server-Log steht dieser Stacktrace:
WARN 10.10.2014 08:05:44.267 (/fs5webedit): Exception while dispatching incoming RPC call
FSVersion=5.1.209.63675#4044;JDK=1.7.0_17 64bit Oracle Corporation;OS=Linux 3.2.0-54-generic amd64;Date=10.10.2014 08:05:44
com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract de.espirit.firstspirit.webedit.client.forms.FormScriptResult de.espirit.firstspirit.webedit.client.forms.StoreElementFormSe
rvice.executeScript(int,java.lang.String,de.espirit.firstspirit.webedit.client.forms.FormScriptSetup)' threw an unexpected exception: java.lang.IllegalStateException: loading of public type 'de.ams.push.fsm.
appcenter.executable.PushmanagerExecutable' failed, type de.espirit.firstspirit.access.script.Executable
at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:389)
at de.espirit.firstspirit.webedit.server.control.PollSupportingWebeditService.logAndEncodeThrowable(PollSupportingWebeditService.java:208)
at de.espirit.firstspirit.webedit.server.control.PollSupportingWebeditService.processCall(PollSupportingWebeditService.java:169)
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:95)
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:689)
at de.espirit.firstspirit.webedit.server.ServiceAuthentication.doChain(ServiceAuthentication.java:33)
at de.espirit.firstspirit.io.servlet.WebAuthentication.doFilter(WebAuthentication.java:552)
at de.espirit.firstspirit.io.servlet.WebAuthentication.doFilter(WebAuthentication.java:157)
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:722)
Caused by: java.lang.IllegalStateException: loading of public type 'de.ams.push.fsm.appcenter.executable.PushmanagerExecutable' failed, type de.espirit.firstspirit.access.script.Executable
at de.espirit.firstspirit.webedit.server.WebeditSpecialistsBroker$WebEditModuleAgent.getTypeForName(WebeditSpecialistsBroker.java:351)
at de.espirit.firstspirit.webedit.server.script.WebeditScriptUtil.execute(WebeditScriptUtil.java:74)
at de.espirit.firstspirit.webedit.server.forms.StoreElementFormServiceImpl.executeScript(StoreElementFormServiceImpl.java:625)
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:601)
at de.espirit.firstspirit.webedit.server.control.PollSupportingWebeditService$RPCInvoke.call(PollSupportingWebeditService.java:262)
at de.espirit.firstspirit.webedit.server.control.PollSupportingWebeditService$ServiceCallPollFeedWrapper.call(PollSupportingWebeditService.java:378)
at de.espirit.firstspirit.webedit.server.concurrent.ExecutionManager$NamedCallable.call(ExecutionManager.java:136)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
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.ams.push.fsm.appcenter.executable.PushmanagerExecutable
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 java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at de.espirit.firstspirit.server.jetty.JettyClassLoader.loadClass(JettyClassLoader.java:94)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at de.espirit.firstspirit.server.jetty.JettyClassLoader.loadClass(JettyClassLoader.java:94)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at de.espirit.firstspirit.webedit.server.WebeditSpecialistsBroker$WebEditModuleAgent.getTypeForName(WebeditSpecialistsBroker.java:349)
... 14 more
ERROR 10.10.2014 08:05:44.391 (de.espirit.firstspirit.webedit.server.RemoteBatchLoggingServiceImpl): WebEdit client error occurred: Status code detection: 500 The call failed on the server; see server log for details
In der module.xml ist die Executable so definiert:
<public>
<name>PushmanagerExecutable</name>
<displayname>inApp|Marketing Manager Executable: to activate with fs_button</displayname>
<class>de.ams.push.fsm.appcenter.executable.PushmanagerExecutable</class>
</public>
Der Button ist im Formular so konfiguriert:
<FS_BUTTON
name="cs_iamm_create_campaign_button"
alwaysEnabled="yes"
hidden="no"
icon="media:inAppMarketingManager_icon"
onClick="class:de.ams.push.fsm.appcenter.executable.PushmanagerExecutable"
style="button"
useLanguages="yes">
<LANGINFOS>
<LANGINFO lang="*" label="Create campaign"/>
<LANGINFO lang="DE" label="Kampagne erstellen"/>
</LANGINFOS>
</FS_BUTTON>
Woran könnte es liegen, dass es im SiteArchitekt funktioniert jedoch nicht im ContentCreator?
Hallo,
Nur sicherheitshalber: Wurde die WepApp auch dem CC-Web-Kontext hinzugefügt und entsprechend deployed (oberer "Aktualisieren"-Button)?
Falls ja hilft es ggf. beim onClick nicht den Klassennamen sondern den Komponentennamen aus der module.xml einzutragen, also
<FS_BUTTON
...
onClick="class:PushmanagerExecutable"
...
</FS_BUTTON>
Viele Grüße
Michael
Hallo,
Ursache ist hier folgendes:
Caused by: java.lang.ClassNotFoundException:
de.ams.push.fsm.appcenter.executable.PushmanagerExecutable
Das Executable ist im Contentcreator unbekannt. Hier muss man in der module.xml zusätzlich eine WebApp mit dem jar das die Klasse enthält als Web-Ressource definieren und diese im ContentCreator hinzufügen.
Viele Grüße
Michael
Hallo,
benötigst du noch weitere Hilfe oder hat dir Michaels Antwort bereits geholfen?
In diesem Fall wäre es nett, wenn du seine "richtige Antwort" entsprechend markierst.
Solltest du zwischenzeitlich eine eigene Lösung gefunden haben, wäre es super, wenn du diese hier bereitstellst.
Viele Grüße
Michaela
Der Fehler besteht leider noch.
Ich habe in der module.xml nun eine zusätzliche Webapp mit einem jar-file, die die Klasse de.ams.push.fsm.appcenter.executable.PushmanagerExecutable enthält hinzugefügt.
Die Konfiguration sieht so aus:
<module>
...
<components>
...
<web-app>
<name>inAPP Marketing-Manager WebClient Extensions</name>
<displayname>inAPP Marketing-Manager WebClient Extensions: for WebClient 5</displayname>
<class>de.ams.push.fsm.projectapp.PushmanagerWebApp</class>
<web-xml>web.xml</web-xml>
<resources>
<resource>lib/pushmanager-fsm-1.5.0-SNAPSHOT-jar-with-dependencies.jar</resource>
</resources>
<web-resources>
<resource>lib/pushmanager-fsm-1.5.0-SNAPSHOT-jar-with-dependencies.jar</resource>
</web-resources>
</web-app>
...
Hallo,
Nur sicherheitshalber: Wurde die WepApp auch dem CC-Web-Kontext hinzugefügt und entsprechend deployed (oberer "Aktualisieren"-Button)?
Falls ja hilft es ggf. beim onClick nicht den Klassennamen sondern den Komponentennamen aus der module.xml einzutragen, also
<FS_BUTTON
...
onClick="class:PushmanagerExecutable"
...
</FS_BUTTON>
Viele Grüße
Michael
Hallo,
benötigst du noch weitere Hilfe oder hat dir Michaels Antwort bereits geholfen?
In diesem Fall wäre es nett, wenn du seine "richtige Antwort" entsprechend markierst.
Solltest du zwischenzeitlich eine eigene Lösung gefunden haben, wäre es super, wenn du diese hier bereitstellst.
Viele Grüße
Thorsten