2011-11-01 10 views
6

कॉन्फ़िगर कैसे करें I JBoss के साथ आने वाले मेरे आवेदन से libs लोड करने का प्रयास करने के साथ कुछ मुद्दों में भाग रहा हूं।JBOSS 5.1.0 GA क्लासलोडर

मैं अपने आवेदन में नवीनतम और सबसे बड़ी 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. 

अपने आवेदन में मैं निम्नलिखित जार मेरी युद्ध lib में स्थित है निर्देशिका:

  • Jul-टू-slf4j-1.6.1.jar
  • slf4j-api-1.6.1.jar
  • slf4j-log4j12-1.6.1.jar
  • 01,235,

मेरी परियोजना को एक युद्ध के साथ एक ईएआर के रूप में तैनात किया गया है। सभी पुस्तकालय युद्ध में रहते हैं।

कुछ शोधों के आधार पर यह सुझाव दिया गया है कि जेबॉस 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> 

यह पहचानता है कि ईएआर फ़ाइल पहले लोड की जानी चाहिए।

मैं अपने युद्ध के लिए एक बनाया है:

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> 

इस विन्यास मैं स्टार्टअप लॉग में निम्न त्रुटि हो रही है साथ मेरी परियोजना से जार जेबॉस के सामने लोड हो जाएंगे? खुद classloader परिभाषित करने के लिए

<jboss-app> 
    <loader-repository> 
    com.example:archive=unique-archive-name 
    </loader-repository> 
</jboss-app> 
META-INF में

/jboss-app.xml:

उत्तर

0

आप के रूप में की तरह कुछ का उपयोग करना चाहिए।

हम इसे एप्लिकेशन के अंदर अपने हाइबरनेट जार तैनाती के लिए उपयोग करते हैं।

विवरण

0

मैं जानता हूँ कि इस सूत्र बहुत पुरानी है के लिए https://community.jboss.org/wiki/ClassLoadingConfiguration देखें, लेकिन मैं आज एक ऐसी ही समस्या थी तो मुझे लगता है समस्या ही किसी के साथ अभी तक हो सकता है।

मुझे अपने उपप्रोजेक्ट्स (जेबॉस 5.1.0 जीए) के अंदर एक ही पैकेज/क्लास नाम के साथ, विभिन्न संदर्भों में दो समान 'कान' चलाने की आवश्यकता थी।

तो कुछ शोध के बाद, और यहां दिए गए पूर्ण 'jboss-classloading.xml' संस्करण का उपयोग करने के प्रयासों और कुछ ब्लॉगों द्वारा, मैंने अपने ईएआर पर 'jboss-classloading.xml' फ़ाइल का एक सरल संस्करण उपयोग किया (बिना मेरी उप जार/युद्ध/आदि के लिए विशेष '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

:

मैं इस साइट से काम कर संस्करण मिला