2011-07-08 1 views
3

Notre application a plusieurs fichiers EAR déployés sur un seul JBOSS-AS.Plusieurs liaisons SLF4J dans JBOSS classées ERROR

Chaque fichier EAR utilise SLF4J pour la journalisation et il est disponible dans la bibliothèque WAR. Nous avons également un cas où nous allons déployer les EAR séparément aussi.

Voici les ERREUR de déploiement que nous avons obtenues pour un seul EAR. Un type similaire d'ERREURS que nous recevons pour chacun des EAR.

2011-07-07 23:27:52,794 ERROR [STDERR] (main) SLF4J: Class path contains multiple SLF4J bindings. 
2011-07-07 23:27:52,794 ERROR [STDERR] (main) SLF4J: Found binding in [vfszip:/jboss-as/common/lib/lib/slf4j-jboss-logging.jar/org/slf4j/impl/StaticLoggerBinder.class] 
2011-07-07 23:27:52,794 ERROR [STDERR] (main) SLF4J: Found binding in [vfszip:/Product_Ear.ear/Product_War.war/WEB-INF/lib/slf4j-jcl-1.5.8.jar/org/slf4j/impl/StaticLoggerBinder.class] 
2011-07-07 23:27:52,794 ERROR [STDERR] (main) SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 

Cette erreur est due au fait que nous avons plusieurs liaisons de SLF4j selon l'URL d'explication.

Questions:

  1. Si pas être un avertissement au lieu de une erreur?

  2. Y at-il un moyen de l'exécuter sans erreurs et sans supprimer slf4j-jcl-1.5.8.jar de WARs?


sidenote: Même si nous avons eu des erreurs pour la plupart des BME, il n'y a pas d'autres problèmes à cause de cela. Chaque fonctionnalité en retrait fonctionne correctement.

Répondre

3

Ce comportement de slf4j est voulu par la conception. Si vous ne l'aimez pas, vous devez générer un rapport de bogue sur le site slf4j.

Le problème est que JBoss fournit une liaison slf4j dans son chargeur de classe par défaut, et que vous apportez les vôtres. Je ne suis pas assez familier avec JBoss pour dire si le fichier slf4j jar dans common/lib est disponible par défaut, ou si vous le mettez là, mais à cet endroit vous ne pouvez probablement pas le désactiver. Vous pouvez soulever un rapport de bug sur le site jboss. Le problème vient de Je ne crois pas qu'il a été explicitement dit dans la spécification de servlet ce que le classloader de conteneur Web devrait fournir et ce qu'il ne devrait pas. Par conséquent, il y aura des problèmes de déploiement. Le seul remède consiste à supprimer votre propre liaison slf4j et à se connecter aux enregistreurs JBoss.

Mais notez, il sera plus cross plate-forme pour vous si vous laissez le conteneur Web faire la journalisation, comme vous n'êtes pas garanti d'avoir accès au système de fichiers par la spécification.

+0

Merci pour votre suggestion. Je vais vérifier avec ça. Je suis tombé sur cette communauté [POST] (http://community.jboss.org/message/556031). _Mais je ne sais pas si l'exclusion du LoggerBinder ou du binaire entier va m'aider. Merci de me faire part de vos impressions. – raksja

+0

Ne tenez aucun élément de votre déploiement en rapport avec slf4j. Sinon, vous pouvez rencontrer des problèmes de classloader. –

+1

Le POST explique apparemment comment vous pouvez désactiver la liaison slf4j. Je vous suggère de l'essayer. –

Questions connexes