Questions & Answers

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

Type a product name