2011-11-01 24 views
6

JBossに付属のものではなく、アプリケーションからlibsを読み込もうとする際に問題が発生しています。JBOSS 5.1.0 GA ClassLoaderの設定方法

私は自分のアプリケーションの最新かつ最高のSLF4Jを使用するようにしようとしていますし、そうすることで、私は次のメッセージを取得しています:私のアプリケーションで

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. 

私は私のWAR libにある以下のjarファイルを持っていますディレクトリ:

  • 7月ツーSLF4J-1.6.1.jar
  • SLF4J-API-1.6.1.jar
  • SLF4J-log4j12-1.6.1.jar

私のプロジェクトは、WAR付きのEARとして配備されています。すべてのライブラリはWAR内にあります。

いくつかの調査に基づいて、JBoss 5.1ではjboss-classloading.xmlファイルを作成することが推奨されています。

<classloading xmlns="urn:jboss:classloading:1.0" 
    name="ecotrak.ear" 
    domain="ecotrak.ear" 
    export-all="NON_EMPTY" 
    import-all="true" 
    parent-first="false"> 
</classloading> 

これは、EARファイルが最初にロードされることを示しています。

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) 

持つために正しい方法です何:私は、起動ログに次のエラーを取得しています。このような構成と

<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> 

は、私も自分のWARのための1つを作成しました私のプロジェクトのjarファイルはJBossの前にロードされますか?

答えて

0

あなたはとのようなものを使用する必要があります。独自のクラスローダを定義するにはMETA-INF /のjboss-app.xmlに

<jboss-app> 
    <loader-repository> 
    com.example:archive=unique-archive-name 
    </loader-repository> 
</jboss-app> 

アプリケーション内部でHibernate jars deploymentementを使用します。

は、私は、このスレッドは非常に古いですが、私は、問題自体は誰かとまだ起こるかもしれないと思うので、私は今日、同様の問題があった知っているの詳細

0

ためhttps://community.jboss.org/wiki/ClassLoadingConfigurationを参照してください。

サブプロジェクト(JBoss 5.1.0 GA)内に同じパッケージ/クラス名を使用して、2つの同様の「耳」を異なるコンテキストで実行する必要がありました。

ここで提供されている完全な 'jboss-classloading.xml'バージョンといくつかのブログを使用しようとすると、私はEAR上でより簡単なバージョンの 'jboss-classloading.xml'ファイルを使用しました私のサブプロジェクトのJAR/WARの/ etcのための特定の 'JBossの-classloading.xml'):。

<classloading xmlns="urn:jboss:classloading:1.0" 
      domain="IsolatedDomain" 
      export-all="NON_EMPTY" 
      import-all="true"> 
</classloading> 

これは私のEARプロジェクトMETA-INFディレクトリに含まれていました。これが他の人に同様の問題を引き起こすのを助けることを願っ

https://access.redhat.com/documentation/en-US/JBoss_Enterprise_Application_Platform/5/html/Microcontainer_User_Guide/sect-JBoss_Microcontainer_User_Guide-The_ClassLoading_Layer-ClassLoading.html

は、私はこのサイトからの作業バージョンを持って
関連する問題