Search the FirstSpirit Knowledge Base
Hallo zusammen,
ich verzweifle gerade an der Integration des FormEdit-Moduls. CMS-Seitig scheint alles zu funktionieren.
Das Formular wird korrekt als HTML generiert, das Servlet ist in der Formular-Action eingetragen.
Beim Abschicken des Formulars leitet das System immer auf die error.jsp weiter. Im Server-Log (in unserem Fall ein Tomcat), bekomme ich als einzigen Hinweis "WARN 2012-07-01 19:58:20,515 (de.espirit.firstspirit.opt.formedit.FormServlet) Ini file not exists, using empty default"
Die IniDatei exisitiert jedoch. Der Inhalt der fs-formedit.ini
#FirstSpirit FormEdit - configuration.
#Sun Jul 01 17:09:22 CEST 2012
formEncoding=UTF-8
captchaWidth=100
errorRedirect=error.jsp
captchaChars=6
captchaHeight=50
iniFile=de/tools/fs_formlogger.ini
pathPrefix=
okRedirect=ok.jsp
Der Inhalt der generierten "fs_formlogger.ini" lautet:
loggers=ContactLogger
loggers.Kontakt=ContactLogger
ContactLogger.class=de.espirit.firstspirit.opt.formedit.MailLogger
ContactLogger.mailTemplatePath=/de/tools/kontakt/mailtemplate_kontakt.htm
ContactLogger.smtpHost=localhost
Das Formular soll im ersten Schritt nur die Formularinhalte per Mail verschicken. Das ini-File ist im angegebenen Pfad unterhalb des Webapp-Ordners erreichbar (parallel zu WEB-INF).
Scheinbar wird der Pfad zur fs_formlogger.ini der ini-Datei nicht korrekt verarbeitet. Ich habe bereits verschiedene Varianten durchgespielt: Sowohl der Dateipfad als auch der HTTP-Pfad jeweils absolut und relativ haben keinen Erfolg gebracht.
Wie müsste der Pfad korrekt lauten? Liegt der Fehler evtl. an ganz anderer Stelle?
Vielen Dank und viele Grüße,
Martin Brandt
Hallo Herr Brandt,
wie ist denn die Struktur im Tomcat? Gibt es einen Context, in dem der Auftritt landet?
Dann geben Sie bitte "/contextname" als pathPrefix und "/contextname/de/tools/fs_formlogger.ini" als iniFile dem FormLogger-Servlet an.
Viele Grüße,
Raphael Richter.
Hallo zurück,
wie ist denn der Inhalt der web.xml (bzw. die FormEdit-spezifischen Einträge)?
Vielen Dank und Grüße,
Raphael Richter.
Hallo Herr Richter,
der relevante Teil der web.xml lautet:
<servlet>
<servlet-name>fsfe-FormLogger</servlet-name>
<servlet-class>de.espirit.firstspirit.opt.formedit.FormServlet</servlet-class>
<init-param>
<param-name>pathPrefix</param-name>
<param-value/>
</init-param>
<init-param>
<param-name>iniFile</param-name>
<param-value>/de/tools/fs_formlogger.ini</param-value>
</init-param>
<init-param>
<param-name>okRedirect</param-name>
<param-value>ok.jsp</param-value>
</init-param>
<init-param>
<param-name>errorRedirect</param-name>
<param-value>error.jsp</param-value>
</init-param>
<init-param>
<param-name>formEncoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
Viele Grüße,
Martin Brandt
Hallo Herr Brandt,
wie ist denn die Struktur im Tomcat? Gibt es einen Context, in dem der Auftritt landet?
Dann geben Sie bitte "/contextname" als pathPrefix und "/contextname/de/tools/fs_formlogger.ini" als iniFile dem FormLogger-Servlet an.
Viele Grüße,
Raphael Richter.
Hallo Herr Richter,
der Tip mit dem PathPrefix war super. Scheinbar wird die Ini-Datei nun gezogen. Leider bekomme ich nun eine neue Fehlermeldung zum Mailtemplate:
ERROR 2012-07-02 20:02:21,640 (de.espirit.firstspirit.opt.formedit.FormServlet) Logger 'ContactLogger' error: No recipient defined in mailtemplate!
java.io.IOException: No recipient defined in mailtemplate!
at de.espirit.firstspirit.opt.formedit.MailLogger.log(MailLogger.java:220)
at de.espirit.firstspirit.opt.formedit.FormServlet.doPost(FormServlet.java:340)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at de.espirit.firstspirit.acl.servlet.MultiAccessControlFilter.doFilter(MultiAccessControlFilter.java:100)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)
ERROR 2012-07-02 20:02:27,500 (de.espirit.firstspirit.opt.formedit.MailLogger) Mail template file not found: /de/tools/kontakt/mailtemplate_kontakt.htm
WARN 2012-07-02 20:02:27,525 (de.espirit.firstspirit.opt.formedit.FormServlet) Ini file not exists, using empty default
Das Mailtemplate ist unter der URL "/de/tools/kontakt/mailtemplate_kontakt.htm" erreichbar. Dennoch meldet das Log-file das Gegenteil.
Hier der Inhalt des Mailtemplates:
Reply-To: no-reply@ourdomain.de
Sender: %email%
Subject: feedback Webseite
Attachements: %all%
Hallo,
ein neues Feedback wurde auf der Weseite abgegeben:
%date%-%time%
%name%
%email%
%anschrift%
%feedback%
Ist es sinnvoll für diesen Fehler ein neues Ticket zu öffnen oder darf ich es in diesem Ticket weiterverfolgen?
Vielen Dank und viele Grüße,
Martin Brandt
Hallo Herr Brandt,
haben Sie auch hier einmal mehrere Pfadangaben versucht? Also
/content/de/tools/kontakt/mailtemplate_kontakt.htm
oder den kompletten Dateipfad?
Viele Grüße,
Raphael Richter.
Hallo Herr Richter,
ich habe auf Ihren Hinweis hin den gesamten Tomcat Pfad (der aber per Rewrite-URL vom Apache verarbeitet wird) eingetragen. Damit funktioniert das Formular. Allerdings wird diese URL nicht vom CMS generiert, so dass bei einer Neugenerierung das Formular nicht funktionieren wird. Kann man für das Mailtemplate einen Präfix definieren?
Im Log-File bekomme ich nun eine spannende neue Meldung "Attention the form ("Kontakt") couldn't allocate to a specific logger! Your mail will be send to default loggers".
Im CMS ist das Formular wie im Screenshot mit einem Logger versehen.
Könnten Sie mir bitte auch hier nochmal weiterhelfen?
Viele Grüße,
Martin Brandt
Hallo,
das was in der web.xml als PathPrefix eingestellt wird, wird vor den Pfad zum Mailtemplate gesetzt. Der Pfad zur loggers.ini muss das Prefix auch beinhalten.
Path Prefix:
In diesem Feld ist ein Prefix anzugeben, welches dem Pfad zur Mail-
Vorlage vorangestellt wird, um diese verwenden zu können. Dieses Prefix beschreibt
den Teilpfad zwischen dem WebApp-Root und dem von FirstSpirit erstellten Ordner.
Für die Staging-Umgebung wäre dies beispielsweise die Auftrags-ID.
Loggers.ini Path: In diesem Feld muss der Pfad zur Konfigurationsdatei fsformlogger.
ini angegeben werden. Ist dieses Feld leer oder kann die Datei nicht
gefunden werden, wird auf eine leere Konfigurationsdatei zurückgegriffen.
Beispiel Staging:
2708/de/configuration/fs-formlogger.ini
Dem Pfad für die Staging-Umgebung ist die Auftrags-ID – hier 2708 – vorangestellt.
Beispiel Live:
de/configuration/fs-formlogger.ini
Der hier anzugebende Pfad kann auch absolut angegeben warden. Dieses Beispiel
sucht die Datei relativ zum WebAppRoot.
Ihre "neuen" Fehlermeldung wird auch noch die Meldung vorrausgegegangen sein, dass ihr Pfad zur loggers.ini falsch ist, und deswegen kann es nicht zugeordnet werden, da er eine leere ini geladen hat (siehe Loggers.ini Path)
Hallo Herr Klein,
vielen Dank für die Antwort. Leider komme ich auch damit nicht zum Ziel.
Ich kann aber kurz das Setup beschreiben:
Die Struktur im Tomcat ist wie folgt:
Die Web-App liegt im Ordner "/opt/tomcat/webapps/project_2582_live".
Die HTML-Dateien liegen im Ordner "/opt/tomcat/webapps/project_2582_live/bit.de"
Die fsFormLogger-Ini ist hier zu finden: "/opt/tomcat/webapps/project_2582_live/bit.de/de/tools/fs_formlogger.ini"
Das Mailtemplate liegt hier: "/opt/tomcat/webapps/project_2582_live/bit.de/de/tools/kontakt/mailtemplate_kontakt.htm"
Dem Tomcat ist ein Apache vorgeschaltet, über den per HTTP die Dateien mit den URLs "/de/tools/kontakt/mailtemplate_kontakt.htm" und "/de/tools/fs_formlogger.ini" erreicht werden.
Der Ordner "bit.de" ist ein symbolischer Link, damit die Generierung nicht dirket in die WebApp erfolgt.
Nach meinem Verständnis müsste folgende Konfiguration in der Datei "fs-formedit.ini" vorgenommen werden:
iniFile=bit.de/de/tools/fs_formlogger.ini
pathPrefix=/project_2582_live/
Dennoch wird die ini-Datei scheinbar nicht gefunden.
Was muss ich bei diesem Setup in die Parameter "iniFile" und "pathPrefix" eintragen?
Vielen Dank und viele Grüße,
Martin Brandt
Erstmal müssen in der fs-formedit.ini KEINE Änderungen vorgenommen werden.
Die Konfiguration erfolgt ausschliesslich wie in der Dokumentation beschrieben über die web.xml!
In der web.xml geben Sie bitte an:
<init-param>
/project_2582_live/bit.de
<param-name>pathPrefix</param-name>
<param-value></param-value>
/project_2582_live/bit.de
</init-param>
<init-param>
<param-name>iniFile</param-name>
<param-value>/de/tools/fs_formlogger.ini</param-value>
</init-param>
wobei sich das pathPrefix danach richt wie der Pfad in der Loggers.ini aussieht.