matthiasforberg
Occasional Collector

Vorschau und WebEdit mit Velocity?

Hallo zusammen,

ich stehe vor einer besonderen Herausforderung, und zwar sollen mit FirstSpirit (5.0) ausschließlich Dateien im Format Velocity Template erzeugt werden, die in einer Webapplikation ausgewertet werden. Die Dateien enthalten zwar den vollständigen HTML Code (also nicht nur Schnipsel), sind aber natürlich in der Vorschau relativ unbrauchbar für die direkte Anzeige.

Nun haben wir uns was ausgedacht, wie man die Vorschau umkonfigurieren könnte, dass eine Instanz der Webapplikation auf das /fs5preview Verzeichnis zugreifen kann. Wir haben das noch nicht getestet, aber ich gehe davon aus, das wir das hinbekommen.

Jetzt will der Kunde aber unbedingt WebEdit benutzen und da habe ich etwas bedenken. Hier meine eigentliche, ganz allgemeine Frage:

Läuft WebEdit automatisch über die Applikation, wenn man die Vorschau umkonfiguriert oder was muss man da noch speziell beachten? Kann das überhaupt funktionieren oder funktioniert dann das Servlet für WebEdit gar nicht mehr?

Grüße

Matthias

18 Replies
Peter_Jodeleit
Crownpeak employee

Das sollte funktionieren. Im Prinzip ist das ja vergleichbar mit PHP-Seiten, nur das diese normalerweise nicht von einer Servlet-Engine ausgewertet werden (normalerweise, wenn man Quercus einsetzt ist es sogar fast identisch).

[EDIT]

Das wäre die übrigens die alternative Lösung, eine externe Engine anbinden, welche die Velocity-Auswertung macht. In der fs-server.conf muss man dann nur noch einstellen, das die Velocity-Template-Dateien "extern" auszuliefern sind ("preview.externalDelivery=vm").

Peter
0 Kudos

Ja genau das meinte ich:

Eine externe Engine soll die Velocity Auswertung machen, d.h. wenn man in FS eine Vorschau auf der Velocity Seite macht, soll direkt die ausgewertete HTML Seite der Applikation zur Anzeige kommen - und zwar so, dass man darin auch navigieren kann...

Und das ganze dann ebenso für den WebClient. Benutzt der dieselbe Engine? Also ist mit preview.externalDelivery auch gleichzeitig die Delivery für WebEdit eingestellt?

0 Kudos

Hallo Matthias,

der von Peter genannte Paramter preview.externalDelivery gilt tatsächlich auch für den Web-Client. Im Handbuch ADMI50DE_FirstSpirit_AdminDocumentation.pdf sind die Parameter im Detail beschrieben. Es sollte genügen, folgende in fs-server.conf einzutragen, falls die Velocity-Dateinamen alle mit ".vm" enden:

preview.externalDeliveryURL=http://localhost:80

preview.externalDelivery=vm

# eventuell noch: 

preview.cacheFileWithTimestamp

Für die Velocity-Dateien wird dann zusätzlich zum FirstSpirit-Server ein eigener Webserver installiert, dessen URL bei preview.externalDeliveryURL anzugeben ist. Dieser Webserver kann gleichzeitig als Frontend für den gesamten FirstSpirit-Server vor dem Jetty oder Tomcat dienen, wie es in ADMI50DE_FirstSpirit_AdminDocumentation.pdf Kapitel  "Apache HTTP-Server mit Servlet-Engine Jetty" oder "Apache HTTP-Server mit Servlet-Engine Tomcat" für PHP beschrieben ist.

Wichtig dabei ist nur, dass der externe Webserver Zugriff von den lokalen IP-Adressen des FirstSpirit-Servers auf alle Ordner mit Namen preview_cache unterhalb von firstspirit5/web/fs5preview, fs5webedit, sowie fs5preview_PID und fs5webedit_PID bietet, was man am einfachsten erreicht, wenn als DocumentRoot firstspirit5/web eingetragen wird und alle anderen Ordner für den Zugriff gesperrt werden, wie es in den genannten Kapiteln anhand der Konfiguration für Apache httpd gezeigt wird. Technisch ruft hier nämlich das FirstSpirit-PreviewServlet intern URLs auf dem PHP/VM-Server auf und leitet den Inhalt dann an den Browser weiter.

Grüße,

Holger

Super Erklärung! Vielen Dank!!!

Noch eine kurze Frage hinterher, weil diese Einstellung ja den kompletten Server betrifft. Seiten mit Endung .html werden dann trotzdem ganz normal über den jetty ausgeliefert, richtig? Also andere Projekte, die nicht .vm produzieren, sind von dieser Anpassung nicht betroffen.

Grüße

Matthias

0 Kudos

Genau, das betrifft nur Seiten, die auf ".vm" enden. Also auch nicht andere Kanäle im gleichen Projekt.

Peter
0 Kudos
matthiasforberg
Occasional Collector

Hallo nochmal,

das hat alles wunderbar geklappt mit der Vorschau in der Webapplikation. Vielen Dank nochmal!

Bloß ein kleines Problemchen habe ich noch:

Immer wenn ich zum ersten Mal eine Vorschau aus FS heraus mache, wird die Seite ohne Ressourcen (CSS etc.) angezeigt. Wenn ich mit F5 aktualisiere, werde ich auf die FS-Login Maske umgeleitet. Mache ich danach weitere Vorschauen aus FS, wird alles richtig angezeigt.

Kann es sein, dass die Session beim ersten Mal nicht richtig übergeben wird? Was kann man da tun?

Grüße

Matthias

0 Kudos

Kann mir keiner helfen?

Hier ist noch ein Ausschnitt aus dem fs-server.log. Der erste Block ist das Öffnen der Vorschau aus dem Client heraus. Er endet mit "invalid ticket 1ahrmeanh7k9m" (hier liegt wohl der Fehler, aber warum?). Der zweite Block folgt nach erneutem Einloggen:

INFO  19.02.2014 13:21:49.585 (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): Client called 'login' from ip 10.11.12.13

INFO  19.02.2014 13:21:49.586 (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): new session (ID=8606628532315368114, user=mforberg, userID=2770, type=CHILD) created

INFO  19.02.2014 13:21:49.586 (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): Session with ID=8606628532315368114 bound to ip 10.11.12.13

INFO  19.02.2014 13:21:49.586 (de.espirit.firstspirit.io.servlet.WebAuthentication): web login successful, user=UserDTO[id=2770, login=mforberg, name='Matthias Forberg', mail=matthias.forberg@arbeitgeber.xy], session=8606628532315368114

INFO  19.02.2014 13:21:49.662 {pID=7054} (de.espirit.firstspirit.generate.AbstractGenerationContext): generating project properties page

INFO  19.02.2014 13:21:49.663 {pID=7054} (de.espirit.firstspirit.generate.PreviewProduction): generating 'homepage' (id=7162, vm_xml, DE), content processor de.espirit.firstspirit.generate.EmptyContentProcessor@3ca74172

INFO  19.02.2014 13:21:49.663 {pID=7054} (de.espirit.firstspirit.store.access.sitestore.PageRefImpl): generating page reference 'homepage' (id=7162, vm_xml, DE)

INFO  19.02.2014 13:21:49.880 (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): Client called 'login' from ip 10.11.12.13

INFO  19.02.2014 13:21:49.880 (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): new session (ID=440560356167642648, user=mforberg, userID=2770, type=CHILD) created

INFO  19.02.2014 13:21:49.880 (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): Session with ID=440560356167642648 bound to ip 10.11.12.13

INFO  19.02.2014 13:21:49.881 (de.espirit.firstspirit.io.servlet.WebAuthentication): web login successful, user=UserDTO[id=2770, login=mforberg, name='Matthias Forberg', mail=matthias.forberg@arbeitgeber.xy], session=440560356167642648

INFO  19.02.2014 13:21:49.883 {pID=7054} (de.espirit.firstspirit.generate.AbstractGenerationContext): generating project properties page

INFO  19.02.2014 13:21:49.883 {pID=7054} (de.espirit.firstspirit.generate.PreviewProduction): generating 'homepage' (id=7162, vm_xml, DE), content processor de.espirit.firstspirit.generate.EmptyContentProcessor@11b5a70a

INFO  19.02.2014 13:21:49.883 {pID=7054} (de.espirit.firstspirit.store.access.sitestore.PageRefImpl): generating page reference 'homepage' (id=7162, vm_xml, DE)

INFO  19.02.2014 13:21:53.660 (de.espirit.firstspirit.server.authentication.FSTicketLoginModule): invalid ticket 1ahrmeanh7k9m

INFO  19.02.2014 13:21:58.318 (de.espirit.firstspirit.server.authentication.FSUserLoginModule): user 'mforberg' successful logged in.

INFO  19.02.2014 13:21:58.319 (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): Client called 'login' from ip 10.11.12.13

INFO  19.02.2014 13:21:58.319 (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): new session (ID=8154309138043984257, user=mforberg, userID=2770, type=WEB) created

INFO  19.02.2014 13:21:58.319 (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): Session with ID=8154309138043984257 bound to ip 10.11.12.13

INFO  19.02.2014 13:21:58.319 (de.espirit.firstspirit.io.servlet.WebAuthentication): web login successful, user=UserDTO[id=2770, login=mforberg, name='Matthias Forberg', mail=matthias.forberg@arbeitgeber.xy], session=8154309138043984257

INFO  19.02.2014 13:21:58.366 (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): Client called 'login' from ip 10.11.12.13

INFO  19.02.2014 13:21:58.366 (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): new session (ID=7645242715019020437, user=mforberg, userID=2770, type=CHILD) created

INFO  19.02.2014 13:21:58.366 (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): Session with ID=7645242715019020437 bound to ip 10.11.12.13

INFO  19.02.2014 13:21:58.366 (de.espirit.firstspirit.io.servlet.WebAuthentication): web login successful, user=UserDTO[id=2770, login=mforberg, name='Matthias Forberg', mail=matthias.forberg@arbeitgeber.xy], session=7645242715019020437

INFO  19.02.2014 13:21:58.369 {pID=7054} (de.espirit.firstspirit.generate.AbstractGenerationContext): generating project properties page

INFO  19.02.2014 13:21:58.369 {pID=7054} (de.espirit.firstspirit.generate.PreviewProduction): generating 'homepage' (id=7162, vm_xml, DE), content processor de.espirit.firstspirit.generate.EmptyContentProcessor@31b7ea66

INFO  19.02.2014 13:21:58.369 {pID=7054} (de.espirit.firstspirit.store.access.sitestore.PageRefImpl): generating page reference 'homepage' (id=7162, vm_xml, DE)

INFO  19.02.2014 13:21:58.503 (de.espirit.firstspirit.generate.AbstractGenerationContext): generating project properties page

INFO  19.02.2014 13:21:58.503 (de.espirit.firstspirit.generate.AbstractGenerationContext): generating project properties page

INFO  19.02.2014 13:21:58.506 (de.espirit.firstspirit.generate.AbstractGenerationContext): generating project properties page

Kann mir jemand sagen, warum das Ticket invalid ist? Hat das was mit dem "Durchschleusen" durch die Webapplikation zu tun? Ominös finde ich auch die IP 10.11.12.13 (hier geändert). Diese ist mir nicht bekannt und ich kann sie auch nicht anpingen. Hat die was damit zu tun?

Grüße

Matthias

0 Kudos

Hallo Matthias,

das Login von 10.11.12.13 kann ich mir auch nicht erklären. In unserer Admin-Dokumentation wird diese Adresse nur als Beispiel bei "allow from 10.11.12.13" in der httpd.conf verwendet, aber selbst wenn die Zeile unverändert übernommen wurde, kann das nicht die Logmeldung erklären. Sind denn auf dem Server tatsächlich Verbindungen von dieser IP-Adresse über netstat -an oder tcpump zu sehen?

Die von FirstSpirit herausgegebenen Login-Tickets sind nur einmal verwendbar. Wenn also die Anmeldung nicht funktionierte oder der Browser das Session-Ticket nach der Anmeldung verwirft, kann man sich mit demselben Ticket nicht erneut anmelden. Warum die Anmeldung aber nicht funktionierte, kann ich von hier aus ohne weitere Analyse nicht herausfinden. Also zunächst einmal klären, woher genau das 10.11.12.13 stammt, um hier eine Fehlerquelle auszuschließen.

0 Kudos

Hallo Holger, danke für die Antwort. Die IP ist natürlich nicht 10.11.12.13, sondern ich habe die hier geändert, weil ich keine IPs vom Kunden hier posten möchte Smiley Wink

Dann frage ich erstmal beim Kunden nach, was das genau für eine IP ist.

Kann es vielleicht am Browser liegen, dass das Ticket verworfen wird? Oder irgendeine lokale Session Timeout Einstellung? Wenn das nur bei mir auftritt, kann ich damit leben. Ich möchte nur vermeiden, dass die Redaktion sich später immer neu anmelden muss.

0 Kudos