सर्वलेट <लोड-ऑन-स्टार्टअप> मूल्य क्या दर्शाता है


174

मैं यहां थोड़ा भ्रमित हो रहा हूं। हमारे आवेदन में हम कुछ सर्वलेट परिभाषित कर रहे हैं। यहाँ web.xmlसर्वलेट्स में से एक के लिए अंश है :

<servlet>
    <servlet-name>AxisServlet</servlet-name>
    <display-name>Apache-Axis Servlet</display-name>
    <servlet-class>com.foo.framework.axis2.http.FrameworkServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
</servlet> 

मेरी समझ के अनुसार <load-on-startup>स्वचालित रूप से लोड होने के लिए इसके लिए धनात्मक पूर्णांक होना आवश्यक है। मैंने Google पर देखा, लेकिन जो प्रतिक्रियाएँ मुझे मिलीं, वे मेरे भ्रम में शामिल हो गईं।

जवाबों:


186

राल 3.0 दस्तावेज़ इस व्यवहार:

लोड-ऑन-स्टार्टअप एक (वैकल्पिक) पूर्णांक मान निर्दिष्ट कर सकता है। यदि मान 0 या अधिक है, तो यह सर्वलेट्स को लोड करने के लिए एक ऑर्डर इंगित करता है, उच्च संख्या वाले सर्वलेट्स कम संख्याओं वाले सर्वलेट्स के बाद लोड होते हैं।

JSP 3.1 कल्पना (JSR 340) पेज 14-160 पर इस का कहना है:

तत्व load-on-startupइंगित करता है कि इस सर्वलेट को वेब एप्लिकेशन के स्टार्टअप पर लोड किया जाना चाहिए (त्वरित किया गया है) और इसके इनिट () कहा गया है। इस तत्व की तत्व सामग्री एक पूर्णांक होनी चाहिए जो उस क्रम को दर्शाता है जिसमें सर्वलेट लोड किया जाना चाहिए। यदि मान एक ऋणात्मक पूर्णांक है, या तत्व मौजूद नहीं है, तो कंटेनर जब भी चुनता है तो सर्वलेट को लोड करने के लिए स्वतंत्र होता है। यदि मान एक धनात्मक पूर्णांक या 0 है, तो कंटेनर को सर्वलेट में लोड करना होगा और इनिशियलाइज़ करना होगा क्योंकि एप्लिकेशन तैनात है। कंटेनर को यह गारंटी देनी चाहिए कि उच्च पूर्णांक के साथ चिह्नित किए गए सर्वलेट से पहले कम पूर्णांक के साथ चिह्नित सर्वलेट लोड किए गए हैं। कंटेनर समान load-on-startupमूल्य के साथ सर्वलेट्स के लोडिंग का क्रम चुन सकता है ।

आप शायद न केवल जेएसआर, बल्कि अपने वेब कंटेनर के लिए दस्तावेज भी जांचना चाहते हैं। मतभेद हो सकते हैं


उसके जवाब में क्लेटस गलत है। आपको पोस्ट को संपादित करने पर विचार करना चाहिए।
अल्बोज़

3
स्टार्टअप पर लोड निर्दिष्ट नहीं होने पर क्या होता है?
निर्मल

1
@ निर्मल दूसरा पैराग्राफ निर्दिष्ट करता है कि यदि तत्व मौजूद नहीं है तो उसका व्यवहार वैसा ही है जैसे कि वह नकारात्मक था अर्थात जब भी वह चुनता है तो कंटेनर सर्वलेट लोड करने के लिए स्वतंत्र होता है।
फिनएगन

129

संक्षिप्त उत्तर : मूल्य> = 0 का मतलब है कि वेब-ऐप को तैनात करने या सर्वर शुरू होने पर सर्वलेट लोड हो जाता है। मान <0: सर्वलेट लोड हो जाता है जब भी कंटेनर को लगता है।

लंबे उत्तर (कल्पना से):

लोड-ऑन-स्टार्टअप तत्व इंगित करता है कि इस सर्वलेट को वेब एप्लिकेशन के स्टार्टअप पर लोड किया जाना चाहिए (त्वरित किया गया है और इसके इनिट () कहा गया है)। इन तत्व की वैकल्पिक सामग्री को एक पूर्णांक होना चाहिए जो उस क्रम को दर्शाता है जिसमें सर्वलेट को लोड किया जाना चाहिए। यदि मान एक ऋणात्मक पूर्णांक है, या तत्व मौजूद नहीं है, तो कंटेनर जब भी चुनता है तो सर्वलेट को लोड करने के लिए स्वतंत्र होता है। यदि मान एक पॉजिटिव 128 पूर्णांक या 0 है, तो कंटेनर को लोड करना चाहिए और सर्वलेट को इम्प्लीमेंट करना चाहिए क्योंकि एप्लिकेशन तैनात है। कंटेनर को यह गारंटी देनी चाहिए कि उच्च पूर्णांक के साथ चिह्नित किए गए सर्वलेट से पहले कम पूर्णांक के साथ चिह्नित सर्वलेट लोड किए गए हैं। कंटेनर उसी लोड-ऑन-स्टार्ट-अप मूल्य के साथ सर्वलेट्स के लोडिंग का क्रम चुन सकता है।


1
और यही कारण है कि हम आवेदन शुरू होने पर इसे पहले लोड करने के लिए डिस्पैचरसर्वलेट इनवर्टर के लिए 0 का निशान लगाते हैं ..
लकी

11

यह इंगित करता है कि सर्वलेट तब तक शुरू नहीं किया जाएगा जब तक कि कोई अनुरोध इसे एक्सेस करने का प्रयास नहीं करता।

अगर लोड-ऑन-स्टार्टअप शून्य से अधिक या उसके बराबर है तो जब कंटेनर शुरू होगा तो उस सर्वलेट को स्टार्टअप वैल्यू पर लोड के आरोही क्रम में आप वहां डालेंगे (यानी 0, 1 फिर 2 फिर 5 फिर 10 और उसके बाद) ।


7
शून्य लोड करने का कारण बनता है, भी। केवल नकारात्मक मानों की गारंटी नहीं है: "[...] यदि मान एक धनात्मक पूर्णांक या 0 है, तो कंटेनर को सर्वलेट में लोड करना चाहिए और आरंभ करना चाहिए क्योंकि आवेदन तैनात किया गया है। [...]"
marabol

1
@ क्लेटस मुझे लगता है कि शून्य से अधिक या बराबर के साथ शून्य को संशोधित करना बेहतर है , क्योंकि कई उपयोगकर्ता आपके उत्तर को स्वीकार किए गए के अनुसार पढ़ते हैं। अग्रिम धन्यवाद
तारिक

9

सर्वलेट जीवन चक्र

एक सर्वलेट का जीवनचक्र कंटेनर द्वारा नियंत्रित किया जाता है जिसमें सर्वलेट तैनात किया गया है। जब किसी सर्वलेट में अनुरोध को मैप किया जाता है, तो कंटेनर निम्न चरणों का पालन करता है।

  1. यदि सर्वलेट का कोई उदाहरण मौजूद नहीं है, तो वेब कंटेनर:

    ए। सर्वलेट क्लास को लोड करता है

    ख। सर्वलेट क्लास का एक उदाहरण बनाता है

    सी। Init विधि को कॉल करके सर्वलेट उदाहरण को प्रारंभ करता है ( आरंभ एक सर्वलेट बनाने और प्रारंभ करने में कवर किया गया है )

  2. कंटेनर सेवा विधि, अनुरोध और प्रतिक्रिया वस्तुओं को पारित करता है। सेवा विधियों की लेखन सेवा विधियों में चर्चा की जाती है ।

एक 0 मान का load-on-startupमतलब है कि बिंदु 1 को तब निष्पादित किया जाता है जब एक अनुरोध उस सर्वलेट में आता है। अन्य मानों का अर्थ है कि बिंदु 1 को कंटेनर स्टार्टअप पर निष्पादित किया गया है।


निर्दोष जवाब!
गौरव

1

जैसा कि अन्य उत्तर में कहा गया है और यह लोड-ऑन-स्टार्टअप लेख शून्य स्वीकार्य है और किसी भी अन्य सर्वलेट के अनुपस्थित में यह तैनाती के दौरान लोडिंग और लोड पर प्राथमिकता लेगा। लोड-ऑन स्टेटअप का सबसे अच्छा उपयोग सर्वलेट्स को लोड करने में होता है, जो पहले अनुरोधों को प्राप्त करने से पहले अच्छी तरह से आरंभ करने में अधिक समय लेता है।


1
  1. यदि मान दो सर्वलेट के लिए समान है, तो वे उस क्रम में लोड किए जाएंगे जिस पर उन्हें web.xml फ़ाइल के अंदर घोषित किया गया है।
  2. यदि 0 या नकारात्मक पूर्णांक है तो सर्वलेट से लोड किया जाएगा जब कंटेनर उन्हें लोड करने के लिए लगता है।
  3. वेब कंटेनर द्वारा सर्वलेट की लोडिंग, इनिशियलाइज़ेशन और इनिट () विधि की गारंटी देता है।
  4. अगर किसी भी सर्वलेट के लिए कोई तत्व नहीं है, तो वे लोड किए जाएंगे जब वेब कंटेनर उन्हें लोड करने का निर्णय लेता है।

0

हां इसका एक ही मूल्य हो सकता है .... लोड-ऑन-स्टार्टअप को नंबर देने का कारण सर्वर के सभी सीक्वेल को लोड करने के लिए एक अनुक्रम को परिभाषित करना है। 0 लोड-ऑन-स्टार्टअप मूल्य वाले सर्वलेट पहले लोड होंगे और 1 के बाद वाले सर्वलेट उसके बाद लोड होंगे।

अगर दो सर्वलेट्स में लोड-ऑन-स्टार्टअप के लिए समान मूल्य होगा, तो यह लोड किया जाएगा कि कैसे वे web.xml में ऊपर से नीचे तक घोषित किए जाते हैं। सर्वलेट जो पहले web.xml में आता है, पहले लोड किया जाएगा और उसके बाद दूसरा लोड किया जाएगा।


0

-> (लोड-ऑन-स्टार्ट-अप की अनुपस्थिति) टैग सबसे पहले जब कभी भी सर्वर में सर्वर तैनात किया जाता है, तो सर्वर की जिम्मेदारी है कि वह सर्वलेट ऑब्जेक्ट बनाता है। उदाहरण: मान लीजिए कि सर्वलेट सर्वर में तैनात किया गया है, (सर्वलेट ऑब्जेक्ट सर्वर में उपलब्ध नहीं है) ग्राहक सर्वलेट के लिए पहली बार अनुरोध भेजता है, तब सर्वर डिफ़ॉल्ट निर्माणकर्ता की मदद से सर्वलेट ऑब्जेक्ट बनाता है और तुरंत इनिट () कहता है। उस से जब कभी ग्राहक अनुरोध भेजता है तो केवल सेवा पद्धति निष्पादित होगी क्योंकि ऑब्जेक्ट पहले से ही उपलब्ध है

यदि लोड-ऑन-स्टार्ट-अप टैग का उपयोग परिनियोजन विवरणक में किया जाता है: परिनियोजन के समय ही सर्वर टैग के बीच में प्रदान किए गए सकारात्मक मान के आधार पर सर्वलेट के लिए सर्वलेट ऑब्जेक्ट बनाता है। सर्वलेट कक्षाओं के लिए वस्तुओं का सृजन 0-128 से होगा 0 नंबर सर्वलेट पहले बनाया जाएगा और उसके बाद अन्य नंबर।

यदि हम web.xml में दो सर्वलेट्स के लिए समान मूल्य प्रदान करते हैं तो ऑब्जेक्ट्स का निर्माण web.xml में कक्षाओं की स्थिति के आधार पर किया जाएगा, यह सर्वर से सर्वर पर भी भिन्न होता है।

यदि हम स्टार्ट-अप टैग पर लोड के बीच में नकारात्मक मूल्य प्रदान करते हैं तो सर्वर सर्वलेट ऑब्जेक्ट नहीं बनाएगा।

अन्य परिदृश्य जहां सर्वर सर्वलेट के लिए ऑब्जेक्ट बनाता है।

यदि हम web.xml में स्टार्ट अप टैग पर लोड का उपयोग नहीं करते हैं, तो परियोजना तब तैनात की जाती है जब कभी ग्राहक पहली बार सर्वर के लिए अनुरोध भेजता है और ऑब्जेक्ट बनाता है और सर्वर अपने जीवन चक्र के तरीकों को कॉल करने के लिए जिम्मेदार होता है। फिर अगर .class को सर्वर (tomcat) में संशोधित किया गया है। फिर से क्लाइंट संशोधित सर्वलेट के लिए अनुरोध भेजता है, लेकिन टोमैट के मामले में नई वस्तु नहीं बनाई जाएगी और सर्वर तब तक मौजूदा ऑब्जेक्ट का उपयोग करेगा जब तक कि सर्वर का पुनरारंभ नहीं होता है। लेकिन जब कभी-कभी .class फ़ाइल सर्वर से संशोधित होती है, तो सर्वर में सर्वर को फिर से शुरू करने के साथ संशोधित किया जाता है, अगर इसे कोई अनुरोध प्राप्त होता है, तो सर्वर मौजूदा सर्वलेट पर विध्वंस विधि को कॉल करता है और एक नया सर्वलेट ऑब्जेक्ट बनाता है और init को कॉल करता है () ।


-1

यदि मान <0 है, तो अनुरोध आने पर सर्लेट को तत्काल कर दिया जाता है, अन्यथा> = 0 मानों के बढ़ते क्रम में कंटेनर लोड हो जाएगा। यदि 2 या अधिक सर्वलेट्स का एक ही मान है, तो web.xml में घोषित सर्वलेट्स का क्रम।


-2

सर्वलेट कंटेनर सर्वलेट को स्टार्टअप के दौरान या जब पहला अनुरोध किया जाता है, लोड करता है। सर्वलेट का लोडिंग "web.xml" फ़ाइल में "लोड-ऑन-स्टार्टअप" विशेषता पर निर्भर करता है। यदि विशेषता में एक धनात्मक पूर्णांक (0 से 128) है, तो सर्वलेट कंटेनर के लोडिंग के साथ लोड होता है अन्यथा सेवा के लिए पहला अनुरोध आने पर यह लोड होता है।

जब सर्वलेट को एक बार अनुरोध मिलने के बाद लोड किया जाता है, तो उसे "आलसी लोडिंग" कहा जाता है।


-6

यह सरल है क्योंकि आप भी उम्मीद नहीं करते हैं।

यदि मान सकारात्मक है तो कंटेनर शुरू होने पर इसे लोड किया जाता है

यदि मूल्य सकारात्मक नहीं है, तो अनुरोध किए जाने पर सर्वलेट लोड हो जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.