Classloading:
आप सही हैं, JBOSS/server/<configuration>/lib
, या JBOSS/lib
करने के लिए .jar
रों डाल दिया।
जेबॉस एएस बंडल हाइबरनेट लिब के साथ आता है जिसे एएस संस्करण के साथ परीक्षण किया जाता है।
jboss-6.0.0-SNAPSHOT\server\default\conf\jboss-service.xml
देखें:
<server>
<!-- Load all jars from the JBOSS_HOME/server/<config>/lib directory and
the shared JBOSS_HOME/common/lib directory. This can be restricted to
specific jars by specifying them in the archives attribute.
TODO: Move this configuration elsewhere
-->
<classpath codebase="${jboss.server.lib.url}" archives="*"/>
<classpath codebase="${jboss.common.lib.url}" archives="*"/>
</server>
यह भी देखें:
अंतर WEB-INF/lib
औरके बीच:
WEB/lib
में लिब्स आपके युद्ध के साथ आते हैं और केवल उस युद्ध के भीतर दिखाई देते हैं। यदि आपके पास अन्य मॉड्यूल है, उदा। ईजेबी जार, वे इससे दिखाई नहीं देंगे और आपको ClassNotFoundException
मिलेगा या (यदि आपके पास एकाधिक स्थानों में कक्षा है) ClassCastException
।
JBOSS-AS/server/<config>/lib
में लिब्स पूरे सर्वर के लिए दृश्यमान हैं, इस प्रकार सभी तैनात ऐप्स और उनके मॉड्यूल। हालांकि (आईआईआरसी) उनके पास प्राथमिकता नहीं है, इसलिए यदि आप उस lib को लाते हैं उदा। एक युद्ध में, लेकिन ईजेबी जार में नहीं, आप दो अलग-अलग संस्करणों का उपयोग कर समाप्त कर सकते हैं, जो अवांछनीय है (संभवतया उपरोक्त ClassCastException
तक पहुंच जाएगा)।
कक्षा लोडिंग व्यवहार कई तरीकों से tweaked किया जा सकता है, उदाहरण के लिए देखें JBoss wiki।
स्टेटिक डेटा:
जावा ईई, कि मुसीबतों लाता में स्थिर खेतों पर विश्वास न करें। उदाहरण के लिए,। एक ही कक्षा को विभिन्न क्लासलोडर्स द्वारा लोड किया जा सकता है, इसलिए इन स्थिर मूल्यों के कई उदाहरण होंगे।
यदि आप अधिक WARs के बीच डेटा साझा करना चाहते हैं, तो बाहरी संग्रहण का उपयोग करें - एक डेटाबेस, एक फ़ाइल (सिंक्रनाइज़ेशन के साथ यदि आप इसे लिखते हैं), जेबॉस कैश इत्यादि।
स्रोत
2010-01-21 12:08:15
+1 मैं अपने साझा जार के लिए एक अपने समर्पित निर्देशिका पसंद करते हैं इससे इसे बनाए रखना आसान हो जाता है – stacker