2012-01-19 2 views
0

J'essaie de tester une guerre (basée sur le printemps) que je viens d'écrire et de la déployer sur TOMCAT_HOME/webapps/ puis sur tomcat. Après une minute ou deux, il est évident que le WAR ne fonctionne pas (car il devrait consommer des messages d'une file d'attente ActiveMQ ... et ce n'est pas le cas). Je regarde la sortie standard de la console et voir:Débogage avec Tomcat

INFO: Deploying web application archive Optimizer.war 
log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader). 
23 [Thread-2] INFO org.apache.camel.spring.handler.CamelNamespaceHandler - OSGi environment not detected. 
Jan 19, 2012 10:54:20 AM org.apache.catalina.core.StandardContext startInternal 
SEVERE: Error listenerStart 
Jan 19, 2012 10:54:20 AM org.apache.catalina.util.SessionIdGenerator createSecureRandom 
INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [184] milliseconds. 
Jan 19, 2012 10:54:20 AM org.apache.catalina.core.StandardContext startInternal 
SEVERE: Context [/Optimizer] startup failed due to previous errors 

Voici mon fichier log4j.properties:

log4j.rootLogger=INFO 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d [%c] [%t] (%F:%L) %-5p %c %x - %m%n 
log4j.logger.org.milyn=INFO 
log4j.logger.org.exolab.castor=INFO 
log4j.logger.org.castor.core=INFO 
log4j.logger.org.apache.commons.digester=INFO 
log4j.logger.org.apache=INFO 
log4j.logger.org.springframework=INFO 
log4j.logger.com.ibatis=INFO 
log4j.logger.java.sql.Connection=INFO 
log4j.logger.java.sql.PreparedStatement=INFO 
log4j.logger.java.sql.ResultSet=INFO 
log4j.logger.java.sql.Statement=INFO 

Et voici mon fichier web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns /j2ee/web-app_2_4.xsd" 
    version="2.4"> 

    <!-- The display name of this web application --> 
    <display-name>Optimizer</display-name> 

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

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

Pour un I » d aimer savoir comment rendre mon application/Tomcat plus verbeuse afin que je puisse voir ce qui se passe vraiment ici (et s'il vous plaît noter, la console Tomcat et correspondant catalina.log sont les seuls urces que j'ai pour le débogage ... ne peut pas l'exécuter à partir d'Eclipse workbench car il n'y a pas de point d'entrée main, juste web.xml).

Je soupçonne que quelque chose échoue dans web.xml ou peut-être mon fichier de configuration Spring. Et cela ne me dérangerait pas de déboguer mon fichier de configuration si je pouvais juste obtenir une indication dans les logs/messages d'erreur sur ce qui empêche mon application de démarrer.

Toutes les idées/astuces/suggestions pour commencer le processus de déterminer ce qui va mal sont énormément apprécié! Merci d'avance!

+0

Le démarrage du contexte [/ Optimizer] a échoué en raison d'erreurs précédentes, indique que l'Optimiseur de projet n'a pas démarré. Avez-vous vérifié les journaux du serveur? – kosa

+0

"Erreur listenerStart" - bien, le seul écouteur est le ContextLoaderListener. Et avant cela, nous voyons un message d'erreur log4j à propos d'un ContextLoader. La première chose à faire est donc de comprendre pourquoi les classes Spring ne peuvent pas configurer leur journalisation. Une fois que c'est corrigé, peut-être que vous aurez des informations utiles dans la sortie de l'enregistreur. –

Répondre

0

Vous pouvez réellement exécuter l'application entière à partir de votre IDE si vous le souhaitez, au lieu de lancer Tomcat en externe. Cependant, vous rencontrez le problème que vous devez travailler sur votre fichier war, mais plutôt à partir de vos fichiers .class (compilés dans votre espace de travail). De plus, vous ne testez pas si Tomcat cause des erreurs de déploiement. Je ne me souviens pas très bien du fichier d'erreur Tomcat, mais il y a d'autres fichiers journaux que vous pouvez extraire dans le répertoire tomcat/log et qui fourniront quelques informations supplémentaires. Pour lancer Tomcat dans eclispe, vous devez créer une nouvelle configuration d'exécution Java. Spécifiez la classe principale en tant que org.apache.catalina.startup.Bootstrap Arguments du programme: [-config] start VM Args: comme vous le souhaitez, mais peut-être -Xmx512m, etc ... Répertoire de travail (je pointe généralement vers le répertoire Tomcat/work, si ma mémoire est bonne).

Vous devrez également ajouter les fichiers Tomcat (trouvés dans tomcat/lib et tomcat/bin) au classpath sous les entrées Bootstrap).Une fois que vous faites cela, vous devriez pouvoir lancer Tomcat en tant qu'application java depuis Eclipse, et vous pouvez réellement déboguer étape par étape le processus exact.

REMARQUE: Je fournis cette information de configuration de la mémoire. Je ne me souviens pas du chemin exact pour l'espace de travail.

0

Ajoutez définitivement un appender log pour le printemps. Avec l'appender, vous pouvez spécifier des fichiers journaux supplémentaires pour des écouteurs et des appenders spécifiques. Consultez ce post forum pour plus d'aide: refer this link

Edit: Exemples Spring appender à un autre fichier:

<appender name="SpringAppender" class="org.apache.log4j.DailyRollingFileAppender"> 
    <param name="encoding" value="UTF-8"/> 
    <param name="file" value="C:/logs/Spring.log"/> 
    <param name="DatePattern" value="'.'yyyy-MM-dd" /> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d{HH:mm:ss} %-5p %l - %m%n" /> 
    </layout> 
</appender> 

Heres l'enregistreur de ressort/auditeur défini au niveau de débogage.

<logger name="org.springframework" additivity="false"> 
    <level value="debug" /> 
    <appender-ref ref="SpringAppender" /> 
</logger> 
+0

Merci Michael! Pourrais-je simplement les transformer en 'spring-appender.xml' et' spring-logger.xml' (respectivement) et les mettre sur le classpath? Si oui, y aurait-il une autre configuration nécessaire pour connecter mon application avec ces deux fichiers? Merci encore! – IAmYourFaja

+0

Je n'ai pas l'expérience de faire cela exactement, j'ai généralement un fichier log4j.xml qui est dans le classpath qui définit tous mes besoins de journalisation. –

Questions connexes