2010-08-17 3 views
2

Je crée un service Web REST (à l'aide de JAX-RS, Spring, Spring JMS et ActiveMQ). Je suis surpris que lorsque je le déploie sur Tomcat 5.5.23, je reçois une exception: les bocaux JSF sont-ils nécessaires ?!Est-ce que log4j nécessite des bocaux JSF?

Error configuring application listener of class org.apache.myfaces.webapp.StartupServletContextListener 
java.lang.ClassNotFoundException: org.apache.myfaces.webapp.StartupServletContextListener 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1359) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1205) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3712) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4216) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760) 

Le service Web fonctionnait très bien jusqu'à ce que j'ajouté des fonctionnalités de log4j dans les différentes classes, voici mon fichier log4j.properties (je l'ai placé dans WEB-INF/classes):

log4j.rootCategory=INFO, S 

log4j.logger.com.dappit.Dapper.parser=ERROR 
log4j.logger.org.w3c.tidy=FATAL 

#------------------------------------------------------------------------------ 
# 
# The following properties configure the console (stdout) appender. 
# See http://logging.apache.org/log4j/docs/api/index.html for details. 
# 
#------------------------------------------------------------------------------ 
log4j.appender.S = org.apache.log4j.ConsoleAppender 
log4j.appender.S.layout = org.apache.log4j.PatternLayout 
log4j.appender.S.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n 

Toute idée pour résoudre cela?

+0

Est-ce que cette erreur disparaître lorsque vous supprimez uniquement le fichier log4j.properties. –

+0

Si je le fais, je reçois l'erreur suivante (lors du démarrage de tomcat): log4j: WARN Aucun appenders n'a pu être trouvée pour enregistreur (org.apache.commons.digester.Digester.sax). log4j: WARN Veuillez initialiser correctement le système log4j. 17 août 2010 12:24:22 org.apache.catalina.core.StandardContext commencer GRAVES: Erreur listenerStart – wsb3383

+0

Si je l'enlève, je reçois l'erreur suivante (lors du démarrage de tomcat): log4j: Non WARN des appenders peuvent être trouvés pour logger (org.apache.commons.digester.Digester.sax). log4j: WARN Veuillez initialiser correctement le système log4j. 17 août 2010 12:24:22 org.apache.catalina.core.StandardContext commencer GRAVES: Erreur listenerStart – wsb3383

Répondre

1

Cela ressemble à un problème de hiérarchie de classloader. Vous devez inclure log4j dans votre fichier WAR, ne pas le placer dans les bibliothèques partagées de Tomcat.

J'ai également eu quelques problèmes avec Tomcat 5.5 qui a été corrigé dans Tomcat 6.0. Vous voudrez peut-être envisager de mettre à jour.

+0

C'était une sorte de problème de conflit de classe: MyEclipse a automatiquement placé les fichiers JSTL et JSF dans mon chemin d'accès lib, en plus j'ai remarqué qu'il y a une classe "Logger" dans JSTL (org.apache.taglibs.standard.lang.jstl. Logger), une fois que j'ai déclaré mes classes logger en utilisant le nom complet du paquet apache log4j (org.apache.log4j.Logger) cela a fonctionné !! – wsb3383

2

j'attendre à voir si vous avez une référence à org.apache.myfaces.webapp.StartupServletContextListener dans votre web.xml, comme:

<listener> 
    <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class> 
</listener> 

Pouvez-vous vérifier qu'il n'y a pas un tel élément?

+0

je l'avais enlevé, mais je suis toujours obtenir: log4j: WARN Aucun appenders pourrait être trouvé pour logger (org.apache.commons.digester.Digester.sax). log4j: WARN Veuillez initialiser correctement le système log4j. 17 août 2010 12:43:02 PM org.apache.catalina.core.StandardContext démarrer SEVERE: Erreur listenerStart – wsb3383

+0

Avez-vous ajouté votre fichier log4j.properties? Avez-vous le fichier log4j jar WEB-INF/lib? – Brabster

+0

oui j'ai ajouté le fichier .properties en arrière, mais je n'ai pas le pot de log4j dans web-inf mon application parce que je remarqué qu'il ya un log4j-1.2.8.jar sous TOMCAT_HOME/shared/lib. Ai-je besoin de l'ajouter à mon dossier WEB-INF? – wsb3383

1

Effectuez les dépendances suivantes (le cas échéant) dans maven comme prévu: javax JavaEE-api 6.0 portée: fourni

javax.servlet javax.servlet-api 3.0.1 champ: fourni