2008-11-20 15 views
10

एक सर्वलेट कंटेनर सेट का वर्ग पथ क्या है?सर्वलेट कंटेनर और क्लासपाथ

मेरी समझ के अनुसार तीन घटक शामिल हैं। सर्ट कंटेनर की lib निर्देशिका में जेएआर फाइलें और WEB-INF/classes और जेएआर फाइलों में WEB-INF/lib निर्देशिका में कक्षाएं। Servlet कंटेनर की lib निर्देशिका में कक्षाएं सिस्टम क्लासपाथ में जोड़ दी गई हैं और गतिशील क्लासपाथ में lib निर्देशिका और classes निर्देशिका में कक्षाओं में JAR फ़ाइलें शामिल हैं।

डायनामिक क्लासपाथ सेट क्या है? क्या डायनामिक क्लासपाथ WEB-INF के तहत सभी निर्देशिकाओं को इंगित करता है या WEB-INF/lib और WEB-INF/classes में सभी व्यक्तिगत कक्षाओं और JAR फ़ाइलों को शामिल करता है या केवल दो निर्देशिका WEB-INF/classes और WEB-INF/lib पर इंगित करता है? मान लें कि WEB-INF में bar.properties युक्त foo नामक एक निर्देशिका है। कक्षा पथ में अब bar.properties भी है?

उत्तर

7

"गतिशील" क्लासपाथ WEB-INF/classes सूचीबद्ध करेगा, प्रत्येक जेएआर फ़ाइल WEB-INF/lib के तहत एक अलग प्रविष्टि के रूप में। WEB-INF के तहत अन्य फ़ोल्डर्स शामिल नहीं हैं।

आपके उदाहरण में, bar.properties क्लासपाथ पर नहीं होगा। इसे WEB-INF/classes पर ले जाएं, या इसे WEB-INF/lib के तहत एक JAR फ़ाइल के अंदर रखें।

शेष कक्षा में क्या है आपके सर्वलेट कंटेनर पर निर्भर करता है। यह कार्यान्वयन-विशिष्ट है, लेकिन अधिकांश कंटेनरों में कक्षाओं को रखने के लिए दो अन्य स्थान हैं। एक निर्देशिका है जो कंटेनर के लिए दृश्यमान है, लेकिन अनुप्रयोग नहीं, और दूसरा कंटेनर और सभी अनुप्रयोगों के लिए दृश्यमान है। चूंकि दूसरे ClassLoader सभी अनुप्रयोगों के लिए दृश्यमान है, इसलिए उन कक्षाओं के static सदस्यों को एप्लिकेशन के बीच जानकारी साझा करने के लिए उपयोग किया जा सकता है।

+1

यदि वेब-आईएनएफ lib के तहत अन्य फ़ोल्डरों को शामिल किया गया है तो क्या गुण फ़ाइल को कक्षा पथ में शामिल नहीं किया जाना चाहिए? – Abhi

+0

क्षमा करें, यह एक महत्वपूर्ण टाइपो था, मेरा मतलब था "शामिल नहीं"! – erickson

2

आपके उदाहरण में bar.properties को क्लासपाथ में होने के लिए कक्षा निर्देशिका के अंतर्गत होना आवश्यक होगा।

संबंधित मुद्दे