एक वेब सेवा एक सेवा है जो संचार के लिए REST प्रोग्रामिंग प्रतिमान या SOAP प्रोटोकॉल का उपयोग करके अपने ग्राहकों को सेवा विधियां प्रदान करती है। वेब सेवा को लागू करने के कई तरीके हैं। एक वेब सेवा लिखने के लिए सबसे आसान तरीका एक वर्ग में लिखने के लिए और साथ उस पर टिप्पणी होगी @WebService
और @WebMethod
से एनोटेशन javax.jws
, और फिर एक से इसे लॉन्च main
के साथ -method:
Endpoint.publish("http://localhost:8089/myservice", new MyWebService());
इसका परिणाम यह है कि आप WSDL को पंजीकृत URL पर देख सकते हैं और यदि आपके पास SoapUI या कोई अन्य SOAP क्लाइंट है तो आप अपनी वेब सेवा का परीक्षण और उपयोग भी कर सकते हैं।
दूसरी ओर एक सर्वलेट का उपयोग HTTP अनुरोधों और प्रतिक्रियाओं को परिवहन करने के लिए किया जाता है । इसका उपयोग जेएसपी और एचटीएमएल के साथ एक वेब एप्लिकेशन लिखने के लिए या एक्सएमएल और जेएसएन प्रतिक्रियाओं की सेवा करने के लिए किया जा सकता है (जैसा कि एक प्रतिष्ठित सेवा में) और निश्चित रूप से एसओएपी संदेशों को प्राप्त करने और वापस करने के लिए भी। आप इसे वेब सेवाओं के नीचे एक परत के रूप में सोच सकते हैं । सर्वलेट्स का अपना मानक है जो वर्तमान में जावा सर्वलेट स्पेसिफिकेशन वर्जन 4.0 है
एक अधिक व्यापक और व्यावहारिक दृष्टिकोण एक वेब सेवा को एक फ्रेमवर्क के साथ लिखना है और इसे एक एप्लिकेशन सर्वर या सर्वलेट कंटेनर जैसे कि टॉमकैट या जेबॉस पर प्रकाशित करना है। इस स्थिति में आप HTTP अनुरोधों के परिवहन को संभालने के लिए एक सर्वलेट का उपयोग करेंगे जो आपके SOAP या REST संदेशों को प्रसारित करता है।
सर्वलेट तकनीक के साथ एक वेब सेवा लिखने के लिए आप उदाहरण के लिए JAX-WS (जैसे SOAP) का उपयोग कर सकते हैं। रेस्टफुल सेवाओं को लिखने के लिए, आप या तो JAX-RS (संदर्भ कार्यान्वयन जर्सी के साथ ) का उपयोग कर सकते हैं, या वैकल्पिक रूप से आप स्प्रिंग वेबएमवीसी का उपयोग कर सकते हैं , लेकिन जहां तक मुझे पता है कि इस ढांचे का मुख्य उद्देश्य नहीं है और जर्सी काफी है। उपयोग करने में आसान।
दूसरे प्रश्न के बारे में: @Controller
एनोटेशन एक स्प्रिंग स्पेसिफिक स्टीरियोटाइप एनोटेशन है जो स्प्रिंग को कुछ बताता है कि आपका बीन क्या करने वाला है। नियंत्रक की एक विधि वास्तव में क्या लौटेगी यह आपके तरीकों के वास्तविक कार्यान्वयन पर निर्भर करता है, आप सादे पाठ, HTML, JSON, XML, बाइनरी डेटा या जो भी आप चाहते हैं उसे वापस करने के लिए स्प्रिंग को कॉन्फ़िगर कर सकते हैं।
किनारे पर एक नोट, एक वर्ग जिसे एनोटेट किया गया @Controller
है वह अभी तक एक सर्वलेट नहीं है, यह केवल एक सेम है। आप सर्वलेट्स का उपयोग कैसे करते हैं यह मुख्य रूप से आपके द्वारा उपयोग किए जाने वाले फ्रेमवर्क पर निर्भर करता है। उदाहरण के लिए, जब आप स्प्रिंग का उपयोग करते हैं, तो सर्वलेट कार्य स्प्रिंग्स द्वारा किया जाता है DispatcherServlet
जो बदले में सही फलियों के लिए अनुरोध करता है। यदि आप टॉमकैट का उपयोग करते हैं, तो आप सीधे अपने स्वयं के सर्वलेट्स लिख सकते हैं बस javax.servlet.http.HttpServlet
कक्षा को उपवर्गित कर सकते हैं और आवश्यक विधियों को लिख सकते हैं जैसे कि doGet
आपके ब्राउज़र से HTTP जीईटी अनुरोधों का जवाब देता है।