a_reg
I'm new here

Workflow mit Service im ContentCreator nutzen

Jump to solution

Hallo,

 

ich habe eine Frage bezüglich der Notwendigkeit einer <web-app> in Verbindung mit <service> Komponenten, die auch im ContentCreator zugänglich sein sollen.

In unserern Workflows werden bestimmte Drittsysteme angesprochen. Die Anbindung ist über die Implementierung von <service> Komponenten gelöst  (.getService(..)). Unter der bisherigen FS 4.2 Installation sind die Services auch bei Ausführung der Workflows im Web-Edit out-of-the-box verfügbar, obwohl WebEdit auf einem externen Tomcat läuft. Unter FS 5.1 (R2) erhalten wir nun beim Ausführen der Workflows im ContentCreator eine ServiceNotFoundException.

Ein Anlegen und deployen einer <web-app> mit enprechenden Klassen auf dem ContentCreator-Server löst zwar das Problem (der Service kann gefunden und gecastet werden), jedoch wollte ich an dieser Stelle doch noch mal einmal nachfragen ob dies wirklich notwendig ist (da es ja unter 4 auch ohne klappte).

Bezüglich Editor-Komponenten, Workflow  Group  Provider-,  Store Mapping-  oder  Report-Plugins gibt es dazu ja bereits entsprechende Hinweise in der Admit/Developer Doku und diversen Community Beiträgen (How to fix failing service calls in a web environment).

Grund der Frage ist, dass bei uns der ContentCreator auf dem Tomcat NICHT über die FS Admin-Einstellungen konfiguriert wird (und somit darüber auch keine we-apps deployed werden können) und wir gerne den Aufwand sparen möchten, auf allen Projekten (3 Stages, teilweise >20 Projekte pro Stage) jeweils auch noch die web-apps zu installieren. Meines Wissens gibt es keine "globalen" (projekt-übergreifenden) ContentCreator Web-apps. Oder gibt es eine einfache Alternative, die ich übersehe?

Als Quick-fix haben wir zZ. die service-jar dem Tomcat-Klassenpfad hinzugefügt, sodass der service nun in allen Projeckten global auch im ContentCreator zur Verfügung steht. Das ist natürlich keine Dauerhafte Lösung da Implementierungsänderung manuell auf den Tomcat kopiert werden müssen.

Grüße,

Andreas

14 Replies

Da gibt es dann aber noch ein untersschiedliches Verständnis zu Herrn King:

Nach unserem Verständnis sind wir mit Ansatz (2) durch Ablage der beiden Bibliotheken "fs-webrt.jar" und der individuellen "services.jar" innerhalb von "/fs5webedit" Ihren Wünschen gefolgt. Jedoch zeigte sich hier, wie im Fall (2) von Martin Aulich beschrieben, dass dieser nicht trägt. Da selbst der Service nicht gerufen werden konnte.

Einerseits entspricht das nicht der Empfehlung. Zudem haben Sie für diesen Fall oben aufgeführt:

Service Aufruf OK, Statischer Methoden Aufruf nicht OK

Was auch im Widerspruch zu der Aussage zu Herrn King oben ist.

Wahrscheinlich ist Diskussion hier nicht zielführend. Wie erwähnt kann ich das Anliegen ja auch durchaus nachvollziehen. Ich schlage vor, Sie stimmen sich hier mit Herrn Leinich ab, und wir tragen das Ergebnis für den geneigten Leser hier nach.

Peter
0 Kudos

Die letzte Aussage kann ich nicht ganz nachvollziehen. Hr. King spricht davon, dass wir bei Ansatz 2 die beiden Jars in fs5webedit/lib abgelegt haben. In meinem ersten Post habe ich (unterhalb der Szenarienbeschreibungen) ebenfalls erwähnt, dass wir die fs-webrt.jar sowohl im fs5webedit/lib als auch tomcat/lib Verzeichnis erfolglos probiert haben.

Weiterhin habe ich für Ansatz 2 folgendes Ergebnis beschrieben:

Service Aufruf nicht OK, Statischer Methoden Aufruf OK

Daher decken sich Die Ausführung von Hrn. King und mir m. M. n. hinreichend. Ich gehe Ihnen aber Recht, dass diese komplizierte Thema besser im Dialog diskutiert werden sollte.

Vielen Dank und Gruß

Martin

0 Kudos

Ich bezog mich auf diesen Teil:

Ja, mit Fall 2) meinte ich folgendes Szenario:

Fs-WebRT in tomcat/lib

Service-JAR in fs5webedit/lib:

In Kombination mit diesem Text von weiter oben:

Fs-WebRT in tomcat/lib

Service-JAR in tomcat/lib:

Service: org.apache.catalina.loader.StandardClassLoader@5b8b3f9a,

Connection: WebappClassLoader context: /fs5webedit delegate: false repositories: ----------> Parent Classloader: org.apache.catalina.loader.StandardClassLoader@5b8b3f9a

Service Aufruf OK, Statischer Methoden Aufruf nicht OK

Im Endeffekt ist dies aber tatsächlich egal. Ziel ist ja, das wir gemeinsam zu einer tragbaren Lösung kommen.

Peter
0 Kudos

Achso nun verstehe ich die Verwirrung.

Entschuldigung, ich habe es wohl etwas undeutlich formuliert, aber die beiden zitierten Fragmente beziehen sich auf unterschiedliche Szenarien. Das obere bezieht sich auf Szenario 2 (Service-JAR in fs5webedit/lib) und das untere auf Szenario 1 (Service-JAR in tomcat/lib).

0 Kudos
AuM
I'm new here

So, nun ist das Rätsel gelöst!

Der Grund warum sich in Post https://community.e-spirit.com/message/22690#22690 der Fall 2 und 3 nicht unterschieden haben lag in unserem JAR-File begründet. Über eine transitive Abhängigkeit hat sich die Servlet API in unser JAR-File geschlichen, so dass der Tomcat es für das Classloading ignoriert hat (http://tomcat.apache.org/tomcat-7.0-doc/class-loader-howto.html: "...any JAR file that contains Servlet API classes will be explicitly ignored by the classloader — Do not include such JARs in your web application...").

Da die Klassen dann gemäß der Classloading Hierarchie vom FS-Modul Classloader gezogen wurden kam es zum beschriebenen Fehlerbild.

Die Korrekte Lösung (ohne Nutzung von custom Web-Applikationen) ist also das Verschieben der fs-webrt.jar sowie der custom JARs in das WEB-INF/lib Verzeichnis der entsprechenden ContentCreator / Preview Applikationen.

Vielen Dank für die Unterstützung bei der Fehlersuche!

Martin

0 Kudos