जकार्ता सर्वलेट

जकार्ता सर्वलेट (पूर्व में जावा सर्वलेट) एक जावा सॉफ्टवेयर घटक है जो सर्वर की क्षमताओं का विस्तार करता है। हालांकि सर्वलेट्स कई प्रकार के अनुरोधों का जवाब दे सकते हैं, वे वेब सर्वर पर वेब अनुप्रयोगों को होस्ट करने के लिए आमतौर पर वेब कंटेनरों को लागू करते हैं और इस प्रकार सर्वर-साइड सर्वलेट वेब एपीआई के रूप में अर्हता प्राप्त करते हैं। ऐसे वेब सर्वलेट PHP और ASP.NET जैसी अन्य गतिशील वेब सामग्री प्रौद्योगिकियों के जावा समकक्ष हैं।

परिचय
जकार्ता सर्वलेट जकार्ता ईई में एक जावा क्लास को प्रोसेस या स्टोर करता है जो जकार्ता सर्वलेट एपीआई के अनुरूप है, जावा क्लासेस को लागू करने के लिए एक मानक है जो अनुरोधों का जवाब देता है। सिद्धांत रूप में सर्वलेट्स किसी भी क्लाइंट-सर्वर प्रोटोकॉल पर संचार कर सकते हैं, लेकिन वे अक्सर एचटीटीपी के साथ उपयोग किए जाते हैं। इस प्रकार "सर्वलेट" को अक्सर "एचटीटीपी सर्वलेट" के लिए आशुलिपि के रूप में प्रयोग किया जाता है। इस प्रकार, एक सॉफ्टवेयर डेवलपर जावा प्लेटफॉर्म का उपयोग करके वेब सर्वर में गतिशील सामग्री जोड़ने के लिए एक सर्वलेट का उपयोग कर सकता है। उत्पन्न सामग्री आमतौर पर एचटीएमएल है, लेकिन अन्य डेटा जैसे एक्सएमएल और अधिक सामान्यतः JSON हो सकती है। सर्वलेट एचटीटीपी कुकीज़, या यूआरएल मैपिंग का उपयोग करके कई सर्वर लेन-देन में सत्र चर में स्थिति बनाए रख सकते हैं।

जकार्ता सर्वलेट एपीआई, कुछ हद तक, वेब सेवाओं के लिए दो मानक जावा प्रौद्योगिकियों द्वारा अधिगृहीत की गई है:


 * जकार्ता रेस्टफुल वेब सर्विसेज (JAX-RS 2.0) AJAX, JSON और REST सेवाओं के लिए उपयोगी, और
 * जकार्ता XML वेब सर्विसेज (JAX-WS) SOAP वेब सर्विसेज के लिए उपयोगी है।

सर्वलेट को तैनात करने और चलाने के लिए, एक वेब कंटेनर का उपयोग किया जाना चाहिए। एक वेब कंटेनर (सर्वलेट कंटेनर के रूप में भी जाना जाता है) अनिवार्य रूप से एक वेब सर्वर का घटक है जो सर्वलेट्स के साथ इंटरैक्ट करता है। वेब कंटेनर सर्वलेट्स के जीवनचक्र को प्रबंधित करने, किसी विशेष सर्वलेट के लिए URL मैप करने और यह सुनिश्चित करने के लिए ज़िम्मेदार है कि URL अनुरोधकर्ता के पास सही पहुँच अधिकार हैं।

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

एक सर्वलेट एक वस्तु है जो अनुरोध प्राप्त करती है और उस अनुरोध के आधार पर प्रतिक्रिया उत्पन्न करती है। मूल सर्वलेट पैकेज जावा ऑब्जेक्ट्स को सर्वलेट अनुरोधों और प्रतिक्रियाओं का प्रतिनिधित्व करने के साथ-साथ सर्वलेट के विन्यास पैरामीटर और निष्पादन पर्यावरण को प्रतिबिंबित करने के लिए परिभाषित करता है। पैकेज javax.servlet.http सामान्य सर्वलेट तत्वों के HTTP-विशिष्ट उपवर्गों को परिभाषित करता है, जिसमें सत्र प्रबंधन ऑब्जेक्ट शामिल हैं जो वेब सर्वर और क्लाइंट के बीच कई अनुरोधों और प्रतिक्रियाओं को ट्रैक करते हैं। सर्वलेट्स को WAR फ़ाइल में वेब एप्लिकेशन के रूप में पैक किया जा सकता है।

जकार्ता सर्वर पेज कंपाइलर द्वारा जकार्ता सर्वर पेज (जेएसपी) से स्वचालित रूप से सर्वलेट्स उत्पन्न किए जा सकते हैं। सर्वलेट्स और जेएसपी के बीच अंतर यह है कि सर्वलेट आमतौर पर जावा कोड के अंदर एचटीएमएल एम्बेड करता है, जबकि जेएसपी एचटीएमएल में जावा कोड एम्बेड करता है। जबकि एचटीएमएल उत्पन्न करने के लिए सर्वलेट्स का प्रत्यक्ष उपयोग (जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है) दुर्लभ हो गया है, जकार्ता ईई (जेएसएफ) में उच्च-स्तरीय एमवीसी वेब फ्रेमवर्क अभी भी स्पष्ट रूप से सर्वलेट तकनीक का उपयोग करता है। फेससर्वलेट के माध्यम से निम्न-स्तरीय अनुरोध/प्रतिक्रिया प्रबंधन के लिए। "मॉडल 2" नामक एक पैटर्न में जेएसपी के संयोजन के साथ सर्वलेट का उपयोग करने के लिए कुछ पुराना उपयोग है, जो मॉडल-व्यू-कंट्रोलर का झुकाव है।

इतिहास
जावा सर्वलेट एपीआई की पहली सार्वजनिक घोषणा मई 1996 में उद्घाटन जावावन सम्मेलन में की गई थी। सम्मेलन में घोषणाओं के लगभग दो महीने बाद, जावासॉफ्ट वेबसाइट पर पहला सार्वजनिक कार्यान्वयन उपलब्ध कराया गया था। यह जावा वेब सर्वर (JWS; तब इसके कोडनेम जीव्स द्वारा जाना जाता था) का पहला अल्फा था जिसे अंततः 5 जून, 1997 को एक उत्पाद के रूप में भेज दिया जाएगा।

Java.net पर अपने ब्लॉग में सन दिग्गज और ग्लासफिश के प्रमुख जिम ड्रिस्कॉल ने सर्वलेट प्रौद्योगिकी के इतिहास का विवरण दिया है। जेम्स गोस्लिंग ने पहली बार जावा के शुरुआती दिनों में सर्वलेट्स के बारे में सोचा था, लेकिन यह अवधारणा दिसंबर 1996 तक एक उत्पाद नहीं बन पाई जब सन ने जेडब्ल्यूएस को भेज दिया। यह पहले था जो अब जकार्ता ईई को एक विनिर्देश में बनाया गया था।

सर्वलेट1 विनिर्देश पावनी दीवानजी द्वारा बनाया गया था जब उसने सन माइक्रोसिस्टम्स में काम किया, जून 1997 में संस्करण 1.0 को अंतिम रूप दिया गया। संस्करण 2.2 के साथ शुरू करते हुए, विनिर्देश जावा सामुदायिक प्रक्रिया के तहत विकसित किया गया था।

सर्वलेट एपीआई इतिहास

सर्वलेट का जीवन चक्र
सर्वलेट के जीवन चक्र के लिए तीन विधियाँ केंद्रीय हैं। ये,  , और   वे प्रत्येक सर्वलेट द्वारा कार्यान्वित किए जाते हैं और सर्वर द्वारा विशिष्ट समय पर लागू किए जाते हैं।


 * सर्वलेट जीवन चक्र के प्रारंभिक चरण के दौरान, वेब कंटेनर init विधि को कॉल करके सर्वलेट उदाहरण को प्रारंभ करता है, javax.servlet.ServletConfig इंटरफ़ेस को लागू करने वाली वस्तु को पारित करता है। यह कॉन्फ़िगरेशन ऑब्जेक्ट सर्वलेट को वेब एप्लिकेशन से नाम-मूल्य आरंभीकरण मापदंडों तक पहुंचने की अनुमति देता है।
 * आरंभीकरण के बाद, सर्वलेट उदाहरण क्लाइंट अनुरोधों को पूरा कर सकता है। प्रत्येक एचटीटीपी अनुरोध संदेश को अपने अलग थ्रेड में सेवित किया जाता है। वेब कंटेनर कॉल करता है  प्रत्येक अनुरोध के लिए सर्वलेट की विधि।   विधि अनुरोध के प्रकार को निर्धारित करती है और अनुरोध को संभालने के लिए उपयुक्त विधि को भेजती है। सर्वलेट के विकासकर्ता को इन विधियों के लिए कार्यान्वयन प्रदान करना चाहिए। यदि किसी ऐसी विधि के लिए अनुरोध किया जाता है जो सर्वलेट द्वारा लागू नहीं की जाती है, तो मूल वर्ग की विधि को कहा जाता है, जिसके परिणामस्वरूप आमतौर पर अनुरोधकर्ता को त्रुटि वापस आ जाती है।
 * अंत में, वेब कंटेनर कॉल करता है  विधि जो सर्वलेट को सेवा से बाहर ले जाती है।  विधि, जैसे  सर्वलेट के जीवन चक्र में केवल एक बार कॉल किया जाता है।

निम्नलिखित इन विधियों का एक विशिष्ट उपयोगकर्ता परिदृश्य है।
 * 1) मान लें कि एक उपयोगकर्ता एक समान संसाधन लोकेटर पर जाने का अनुरोध करता है।
 * 2) * ब्राउज़र तब इस यूआरएल के लिए एक एचटीटीपी अनुरोध उत्पन्न करता है।
 * 3) * यह अनुरोध तब उपयुक्त सर्वर को भेजा जाता है।
 * 4) एचटीटीपी अनुरोध वेब सर्वर द्वारा प्राप्त किया जाता है और सर्वलेट कंटेनर को अग्रेषित किया जाता है।
 * 5) * कंटेनर इस अनुरोध को एक विशेष सर्वलेट में मैप करता है।
 * 6) * सर्वलेट को गतिशील रूप से पुनर्प्राप्त किया जाता है और कंटेनर के पता स्थान में लोड किया जाता है।
 * 7) कंटेनर आह्वान करता है   सर्वलेट की विधि।
 * 8) * यह विधि तभी शुरू की जाती है जब सर्वलेट को पहली बार मेमोरी में लोड किया जाता है।
 * 9) * सर्वलेट को इनिशियलाइज़ेशन पैरामीटर पास करना संभव है ताकि वह खुद को कॉन्फ़िगर कर सके।
 * 10) कंटेनर आह्वान करता है   सर्वलेट की विधि।
 * 11) * एचटीटीपी अनुरोध को संसाधित करने के लिए इस विधि को कहा जाता है।
 * 12) * सर्वलेट एचटीटीपी अनुरोध में प्रदान किए गए डेटा को पढ़ सकता है।
 * 13) * सर्वलेट क्लाइंट के लिए एचटीटीपी प्रतिक्रिया भी तैयार कर सकता है।
 * 14) सर्वलेट कंटेनर के एड्रेस स्पेस में रहता है और क्लाइंट से प्राप्त किसी अन्य एचटीटीपी अनुरोध को संसाधित करने के लिए उपलब्ध होता है।
 * 15) *  विधि प्रत्येक एचटीटीपी अनुरोध के लिए कहा जाता है।
 * 16) कंटेनर, किसी बिंदु पर, सर्वलेट को उसकी मेमोरी से अनलोड करने का निर्णय ले सकता है।
 * 17) * एल्गोरिदम जिसके द्वारा यह निर्णय लिया जाता है, प्रत्येक कंटेनर के लिए विशिष्ट होता है।
 * 18) कंटेनर सर्वलेट्स को कॉल करता है   सर्वलेट के लिए आवंटित फ़ाइल हैंडल जैसे किसी भी संसाधन को छोड़ने की विधि; महत्वपूर्ण डेटा को लगातार स्टोर में सहेजा जा सकता है।
 * 19) सर्वलेट और उसकी वस्तुओं के लिए आवंटित मेमोरी को तब कचरा एकत्र किया जा सकता है।

उदाहरण
निम्न उदाहरण सर्वलेट कितनी बार प्रिंट करता है  विधि कहा जाता था।

ध्यान दें कि HttpServlet, GenericServlet का एक उपवर्ग है, जो सर्वलेट इंटरफ़ेस का कार्यान्वयन है।

की विधि  वर्ग तरीकों के लिए अनुरोध भेजता है ,  ,  ,  , और इसी तरह; एचटीटीपी अनुरोध के अनुसार। नीचे दिए गए उदाहरण में   अधिलेखित है और यह भेद नहीं करता है कि यह कौन सी एचटीटीपी अनुरोध विधि प्रदान करता है।

कंटेनर सर्वर
कई उत्पादों में सर्वलेट तकनीक के विनिर्देश लागू किए गए हैं। वेब कंटेनर पृष्ठ पर कार्यान्वयनों की सूची देखें।

अन्य प्रकार के सर्वलेट कंटेनर भी हैं जैसे एसआईपी सर्वलेट्स के लिए, उदाहरण के लिए, सेलफिन हैं।

बाहरी संबंध

 * Servlets.com
 * Servlets.com