Error listenerStart

Beim Aufsetzen von Projekten mit BlazeDS und Spring bin ich häufiger über einen Fehler gestoßen, der nicht sehr aussagekräftig ist. Die Suche im WWW war dabei fast nie eine Hilfe, deswegen habe ich dem Error listenerStart einen eigenen Eintrag gewidmet, in der Hoffnung, das Andere mehr damit anfangen können als ich mit den Ergebnissen, die ich zu jener Zeit gefunden habe.

Der Fehler manifestiert sich folgendermassen in der Standardausgabe des Tomcat-Servers:

20.06.2008 09:46:15 org.apache.catalina.core.StandardContext start
SCHWERWIEGEND: Error listenerStart
20.06.2008 09:46:15 org.apache.catalina.core.StandardContext start
SCHWERWIEGEND: Context [/mein_projekt] startup failed due to previous errors
20.06.2008 09:46:15 org.apache.coyote.http11.Http11Protocol start

In vielen Fällen tritt der Fehler dann auf, wenn Konfigurationsdateien, welche direkt Spring betreffen syntaktische Fehler beinhalten. Hier am Beispiel der Datei contextConfiguration.xml welche über

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/contextConfiguration.xml</param-value>
</context-param>

eingebunden wird. Ist beispielsweise die Definition einer SpringBean nicht in korrektem XML angegeben, tritt der Fehler Error listenerStart auf. Weitere Ursachen können fehlende Treiber sein, die sich nicht im entsprechenden Verzeichniss finden. Ein Kandidat dafür könnte der Treiber zur Datenbank oder andere fehlende jar’s sein.

In jedem Fall lohnt sich der Blick in die log-Dateien im /tomcat/logs Verzeichniss, dort werden zumindest syntaktische Fehler angezeigt. Um dafür die Genauigkeit der Fehlerausgabe einzustellen kann man im /tomcat/conf Verzeichniss die Datei logging.properties entsprechend anpassen.

BlazeDS und Spring

Durch BlazeDS ist es möglich Flex-Anwendungen mit einem Applikationsserver wie Tomcat sprechen zu lassen. Von Haus aus läuft auf Tomcat zunächst einmal normales Java.

Die Verwendung des Java-Frameworks Spring erleichtert dabei auf der Serverseite alltägliche Arbeiten wie die Verbindung zu einer Datenbank oder den Mail-Versand. Würde man ohne die Hilfe von Spring auf eine Datenbank zugreifen, müsste man sich die Datenbank-Abstraktions-Schicht selbst implementieren. Diese Funktionalität ersetzt Spring beispielsweise so, das lediglich die Konfiguration des Datenbankzugangs vorgenommen werden muss, und dann mit wenigen Zeilen Java-Code die Datenbankverbindung steht. Damit das funktioniert muss man sich noch den zu der gewünschten Datenbank passenden JDBC-Treiber suchen (im Falle von MySQL wäre das der MySQL-Connector) und zu den Libraries in den Container legen. Zur Verwendung der Mailfunktionalitäten, bietet Spring Mail-Templates für den Versand normaler Mails, sowie von Mime-Mails mit Anhängen.

Um zu verstehen wie Spring arbeitet und welche Möglichkeiten sich mit Spring bieten lohnt sich in jedem Fall ein Blick auf die umfangreiche Dokumentation.