web-dev-qa-db-fra.com

Comment résoudre l'erreur listenerStart lors du déploiement de l'application Web dans Tomcat 5.5?

J'ai déployé une application Web Apache Wicket qui utilise Spring et Hibernate sur mon instance Tomcat 5.5. Lorsque je navigue vers l'interface de Tomcat Manager, je constate que l'application Web que j'ai déployée ne fonctionne pas. Lorsque j'appuie sur "Démarrer", j'obtiens le message d'erreur suivant; Msgstr "ECHEC - L 'application sur le chemin du contexte/spaghetti n'a pas pu être démarrée".

Mon catalina.log contient les éléments suivants:

Apr 15, 2010 1:51:22 AM org.Apache.catalina.loader.WebappClassLoader validateJarFile  
INFO: validateJarFile(/var/lib/Tomcat5.5/webapps/spaghetti/WEB-INF/lib/jsp-api-6.0.16.jar)   - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/jsp/JspPage.class  
Apr 15, 2010 1:51:22 AM org.Apache.catalina.loader.WebappClassLoader validateJarFile  
INFO: validateJarFile(/var/lib/Tomcat5.5/webapps/spaghetti/WEB-INF/lib/servlet-api-6.0.16.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class  
Apr 15, 2010 1:51:24 AM org.Apache.catalina.core.StandardContext start  
SEVERE: Error listenerStart  
Apr 15, 2010 1:51:24 AM org.Apache.catalina.core.StandardContext start  
SEVERE: Context [/spaghetti] startup failed due to previous errors

Extrait de web.xml:

 <listener> 
 <listener-class> 
 org.springframework.web.context.ContextLoaderListener 
 </listener-class> 
 </ auditeur> 

Toute aide est grandement appréciée.

34
John
/var/lib/Tomcat5.5/webapps/spaghetti/WEB-INF/lib/jsp-api-6.0.16.jar
/var/lib/Tomcat5.5/webapps/spaghetti/WEB-INF/lib/servlet-api-6.0.16.jar

Vous devez pas avoir des bibliothèques spécifiques au serveur dans le /WEB-INF/lib. Laissez-les dans la bibliothèque du serveur d'applications. Cela ne conduirait qu'à des collisions dans le chemin de classe. Débarrassez-vous de toutes les bibliothèques spécifiques au serveur d'applications dans /WEB-INF/lib (Et également dans JRE/lib Et JRE/lib/ext Si vous en avez placé une).

Une cause courante de l'inclusion des bibliothèques spécifiques au serveur d'applications dans la bibliothèque de l'application Web est que les démarreurs pensent que c'est la bonne façon de corriger les erreurs de compilation, entre autres, les classes javax.servlet Qui ne sont pas résolvables. Les mettre dans la bibliothèque de webapp n'est pas la bonne solution. Vous devez les référencer dans le chemin de classe lors de la compilation, c'est-à-dire javac -cp /path/to/server/lib/servlet.jar Et ainsi de suite, ou si vous utilisez un IDE, vous devez intégrer le serveur dans le IDE et associer le projet Web au serveur . Le IDE prendra alors automatiquement les bibliothèques spécifiques au serveur dans le chemin de classe ( buildpath ) du projet webapp.

33
BalusC

J'ai trouvé que le fait de suivre ces instructions m'a aidé à trouver le problème. Pour moi, c'était le tueur, ne sachant pas ce qui avait été brisé.

http://mythinkpond.wordpress.com/2011/07/01/Tomcat-6-infamous-severe-error-listenerstart-message-how-to-debug-this-error/

Citant du lien

Dans Tomcat 6 ou supérieur, l'enregistreur par défaut est l'enregistreur "Java.util.logging" et non Log4J. Donc, si vous essayez d'ajouter un fichier "log4j.properties" - cela ne fonctionnera PAS. L'enregistreur d'utils Java recherche un fichier appelé "logging.properties" comme indiqué ici: http://Tomcat.Apache.org/Tomcat-6.0-doc/logging.html

Donc, pour accéder aux détails de débogage, créez un fichier "logging.properties" sous votre dossier "/ WEB-INF/classes" de votre WAR et vous êtes prêt.

Et maintenant, lorsque vous redémarrez votre Tomcat, vous verrez tout votre débogage dans toute sa splendeur !!!

Exemple de fichier logging.properties:

org.Apache.catalina.core.ContainerBase.[Catalina].level = INFO
org.Apache.catalina.core.ContainerBase.[Catalina].handlers = Java.util.logging.ConsoleHandler
67
Tom Saleeba

J'ai rencontré cette erreur lorsque le JDK sous lequel j'ai compilé l'application était différent de la JVM Tomcat. J'ai vérifié que le gestionnaire Tomcat exécutait jvm 1.6.0 mais l'application a été compilée sous Java 1.7.0.

Après la mise à niveau Java et la modification de Java_HOME dans notre script de démarrage (/etc/init.d/Tomcat), l'erreur a disparu.

10
Colin D

La réponse fournie par Tom Saleeba est très utile. Aujourd'hui, j'ai aussi eu du mal avec la même erreur

28 avril 2015 7:53:27 PM org.Apache.catalina.core.StandardContext startInternal SEVERE: Erreur listenerStart

J'ai suivi la suggestion et ajouté le fichier logging.properties. Et ci-dessous était ma raison d'échec:

Java.lang.IllegalStateException: impossible de définir la propriété du système racine de l'application Web lorsque le fichier WAR n'est pas développé

La cause première du problème était un écouteur (Log4jConfigListener) que j'ai ajouté dans le fichier web.xml. Et selon le lien SEVERE: Exception org.springframework.web.util.Log4jConfigListener , cet écouteur ne peut pas être ajouté dans un WAR qui n'est pas développé.

Il peut être utile pour quelqu'un de savoir que cela se produit sur l'équipement OpenShift JBoss.

1
Agry