Sto riscontrando alcuni problemi con il tentativo di caricare librerie dalla mia applicazione invece di ciò che viene fornito con JBoss.Come configurare JBOSS 5.1.0 GA ClassLoader
io sto cercando di fare uso delle più recenti e più grande SLF4J nella mia applicazione e così facendo sto ottenendo i seguenti messaggi:
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [vfszip:/C:/devtools/workspace/g2/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_5.1_Runtime_Server1302541739184/deploy/ecotrakEar.ear/ecotrak.war/WEB-INF/lib/slf4j-log4j12-1.6.1.jar/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [vfszip:/C:/devtools/jboss-5.1.0.GA/common/lib/slf4j-jboss-logging.jar/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
nella mia applicazione ho i seguenti vasi situati in mia guerra lib directory:
- lug-to-slf4j-1.6.1.jar
- slf4j-api-1.6.1.jar
- slf4j-log4j12-1.6.1.jar 01.235.
Il mio progetto è distribuito come EAR con una GUERRA. Tutte le librerie risiedono nella GUERRA.
Sulla base di alcune ricerche è stato suggerito che per JBoss 5.1 venga creato un file jboss-classloading.xml. Ho creato uno per mio orecchio:
<classloading xmlns="urn:jboss:classloading:1.0"
name="ecotrak.ear"
domain="ecotrak.ear"
export-all="NON_EMPTY"
import-all="true"
parent-first="false">
</classloading>
Questo identifica che il file EAR deve essere caricato prima.
mi hanno anche creato uno per la mia guerra:
<classloading xmlns="urn:jboss:classloading:1.0"
name="ecotrak.war"
domain="ecotrak.war"
parent-domain="ecotrak.ear"
top-level-classloader="true"
export-all="NON_EMPTY"
import-all="true"
parent-first="true">
</classloading>
Con questa configurazione sto ottenendo il seguente errore nei registri di avvio:
11:18:07,949 ERROR [[/ecotrak]] Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V
at org.apache.commons.logging.impl.SLF4JLocationAwareLog.trace(SLF4JLocationAwareLog.java:107)
Qual è il modo corretto in modo da avere i vasi del mio progetto vengono caricati prima di quelli di JBoss?