43 votes

Logback et Jboss 7 - ne fonctionnent pas ensemble?

J'ai un curieux problème. J'ai eu cette application Java, qui a déjà été déployée dans tomcat et heureusement utilisé logback classique comme un slf4j mise en œuvre. Maintenant, quand nous avons essayé de déployer la même application dans un jboss 7.1.serveur final il n'a même pas déployer l'application sur maoning java.lang.ClassCastException: org.slf4j.impl.Slf4jLoggerFactory cannot be cast to ch.qos.logback.classic.LoggerContext C'est la ligne de code malveillant

final LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();

La classe qui a sa est le printemps injecté et qui est un échec - d'où l'ensemble de l'application ne peut pas être déployé. Quelqu'un a une solution à cela? Merci d'avance

Après avoir regardé ce site, en plus d'autres forums, j'ai réalisé que Jboss 7 est livré avec son propre slf4j mise en œuvre et de mettre en œuvre la même ILoggerFactory interface LoggerContext dans logback n'. Notre application a essayé d'obtenir une instance de la même, mais le serveur d'application impose son propre slf4j mise en œuvre.

J'ai essayé de modifier le module.xml dans jboss\modules\org\slf4j\impl\main et l'a signalé à logback pots.

<resources>
    <resource-root path="logback-classic-0.9.28.jar"/>
    <resource-root path="logback-core-0.9.28.jar"/>
</resources>

Maintenant, quand je démarre l'application, j'obtiens une erreur grave

Exception starting filter WicketFilter: java.lang.ClassCastException: ch.qos.logback.classic.LoggerContext cannot be cast to ch.qos.logback.classic.LoggerContext

Je suis à bout de ressources. Tout jboss et logback experts peut vous aider? Merci d'avance

64voto

James R. Perkins Points 4577

Vous devez exclure la version serveurs de slf4j de votre déploiement. Créez un fichier jboss-deployment-structure.xml et placez-le dans votre répertoire WARS META-INF ou WEB-INF .

Le contenu du fichier devrait ressembler à ceci:

 <jboss-deployment-structure>
    <deployment>
        <!-- Exclusions allow you to prevent the server from automatically adding some dependencies     -->
        <exclusions>
            <module name="org.slf4j" />
            <module name="org.slf4j.impl" />
        </exclusions>
    </deployment>
</jboss-deployment-structure>
 

7voto

Torsten Krah Points 86

Si vous utilisez les ponts pour jul ou jcl dans votre application, vous devez également les exclure:

         <module name="org.slf4j" />
        <module name="org.sl4j.jcl-over-slf4j" />
        <module name="org.slf4j.impl" />
        <module name="org.jboss.logging.jul-to-slf4j-stub" />
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X