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

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

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

जकार्ता सर्वलेट एपीआई, कुछ हद तक, वेब सेवाओं के लिए दो मानक जावा प्रौद्योगिकियों द्वारा प्रतिस्थापित किया गया है:
 * जकार्ता [[एक्सएमएल वेब सर्विसेज]] (JAX-RS 2.0) AJAX, JSON और REST सेवाओं के लिए उपयोगी है, और
 * SOAP वेब सेवाओं के लिए उपयोगी जकार्ता XML वेब सेवाएँ (JAX-WS)।

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

सर्वलेट अप्लिकेशन प्रोग्रामिंग अंतरफलक, जावा पैकेज पदानुक्रम में निहित है, वेब कंटेनर और सर्वलेट के अपेक्षित इंटरैक्शन को परिभाषित करता है।

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

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

इतिहास
Java Servlet API की पहली सार्वजनिक घोषणा मई 1996 में JavaOne सम्मेलन के उद्घाटन के दौरान की गई थी। सम्मेलन में घोषणाओं के लगभग दो महीने बाद, पहला सार्वजनिक कार्यान्वयन JavaSoft वेबसाइट पर उपलब्ध कराया गया। यह जावा वेब सर्वर (JWS; तब इसके कोडनेम Jeeves द्वारा जाना जाता है) का पहला अल्फा था। जिसे अंततः 5 जून, 1997 को एक उत्पाद के रूप में भेज दिया जाएगा। Java.net पर अपने ब्लॉग में सन वेटरन और कांच की मछली के प्रमुख जिम ड्रिस्कॉल ने सर्वलेट तकनीक के इतिहास का विवरण दिया है। जेम्स गोस्लिंग ने पहली बार जावा (प्रोग्रामिंग लैंग्वेज) के शुरुआती दिनों में सर्वलेट्स के बारे में सोचा था, लेकिन यह अवधारणा दिसंबर 1996 तक एक उत्पाद नहीं बन पाई जब सन ने JWS को भेज दिया। यह पहले था जो अब जकार्ता ईई को एक विनिर्देश में बनाया गया था।

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

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


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

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

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

ध्यान दें कि  का एक उपवर्ग है , का कार्यान्वयन   इंटरफेस।   ई> की विधि   वर्ग तरीकों के लिए अनुरोध भेजता है  ,  ,  ,  , और इसी तरह; HTTP अनुरोध के अनुसार। नीचे दिए गए उदाहरण में   अधिलेखित है और यह भेद नहीं करता है कि यह कौन सी HTTP अनुरोध विधि प्रदान करता है। <वाक्यविन्यास प्रकाश लैंग = जावा> आयात java.io.IOException;

आयात jakarta.servlet.ServletConfig; आयात jakarta.servlet.ServletException; आयात jakarta.servlet.http.HttpServlet; आयात jakarta.servlet.http.HttpServletRequest; आयात jakarta.servlet.http.HttpServletResponse;

सार्वजनिक वर्ग ServletLifeCycleExample HttpServlet { का विस्तार करता है निजी पूर्णांक साझा काउंटर;

@Override सार्वजनिक शून्य init (अंतिम ServletConfig कॉन्फ़िगरेशन) ServletException फेंकता है { सुपर.इनिट (विन्यास); getServletContext । लॉग (init कहा जाता है); साझा काउंटर = 0; }

@Override संरक्षित शून्य सेवा (अंतिम HttpServletRequest अनुरोध, अंतिम HttpServletResponse प्रतिक्रिया) ServletException फेंकता है, IOException { getServletContext । लॉग (सेवा कहा जाता है); इंट लोकल काउंटर; सिंक्रनाइज़ (साझा काउंटर) { साझा काउंटर ++; स्थानीय काउंटर = साझा काउंटर; }       प्रतिक्रिया.getWriter.लिखना (गिनती को + स्थानीय काउंटर तक बढ़ाना); // एक स्थानीय चर का उपयोग }

@Override सार्वजनिक शून्य नष्ट { getServletContext । लॉग (नष्ट कहा जाता है); } } 

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

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

बाहरी संबंध

 * Servlets.com
 * Servlets.com