2010-04-10 9 views
9

मैंने अपनी वेब सेवा के लिए डब्लूएसडीएल बनाया है। मैं जानना चाहता हूं कि इसे किसी अन्य वेब एप्लिकेशन से जेएसपी पेज से कैसे कॉल करें।एक .jsp पृष्ठ में वेब सेवा क्लाइंट कैसे बनाएं?

मैं jsp से वेब सेवा को कॉल करना चाहता हूं .. उदाहरण के लिए मेरे पास बहुत सरल वेब सेवा है जो सबमिट करने के बाद मेरे index.jsp पृष्ठ में दर्ज टेक्स्ट को वापस प्रदर्शित करेगा, मैं wsdl url का उपयोग कैसे करूं जमा पर क्लिक करते समय टेक्स्ट वैल्यू लेने वाली वेब सेवा को कॉल करने के लिए।

/विक्रम

उत्तर

0

कैसे डेटा जावा सर्वलेट पेज तक पहुंच रहा है?

JSON, XML?

अगर JSON, मैं कैसे सुझाव है कि आप jQuery उपयोग करते हैं, .get() विधि बढ़िया है! और जिस तरह से मैं अपने एएसपी पृष्ठों में उपयोग करता हूं ...

+0

अपने एक्सएमएल और मेरे आईडीई कार्यशाला weblogic – vikram

2

क्या आप ब्राउज़र से इसे कॉल करने के बारे में बात कर रहे हैं, या इसे जेएसपी से ब्राउजर में भेजे गए एचटीएमएल में कुछ प्रस्तुत करने के बारे में बात कर रहे हैं? वे पूरी तरह से अलग समस्याएं हैं।

यदि आप इसे ब्राउज़र से कॉल करने के बारे में बात कर रहे हैं, तो गर्म टिप एसओएपी पेलोड का इलाज एक्सएमएल बॉयलर प्लेट के बड़े ब्लॉब के रूप में करना है। फिर SOAP अनुरोध को अलग करने के लिए आवश्यक जानकारी के कुछ टुकड़े भरें, और उसके बाद XML को सर्वर भेजने के लिए XMLHttpRequest का उपयोग करें। अंत में आप परिणाम एसओएपी रिटर्न पेलोड से खींचें।

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

संपादित करें - जवाब देने सवाल

तो, मूल रूप से आप एक पाठ बॉक्स के साथ एक index.jsp पृष्ठ है। आप सबमिट हिट करते हैं, आप उस सबमिट का टेक्स्ट चाहते हैं जो वेब सेवा पर भेजा जाता है, और परिणाम ब्राउज़र पर वापस प्रदर्शित होता है।

बस, XHLHttpRequest का उपयोग करके छोड़कर, आप एक वेब सेवा क्लाइंट (जेएक्स-डब्ल्यूएस, या एक्सिस, या किसी अन्य जावा वेब सेवा उपकरण किट का उपयोग करना) बनाना चाहते हैं।

तब आपके पास एक सर्वलेट या जेएसपी फॉर्म से POST अनुरोध लेगा, अनुरोध से पाठ निकालें, और फिर यह वेब सेवा को कॉल करेगा। आखिरकार यह परिणाम ग्राहक को वापस प्रस्तुत करेगा (जेएसपी या जो भी हो)।

आप किसी वेब सेवा पर सीधे HTML पोस्ट नहीं कर सकते हैं, प्रोटोकॉल अलग हैं।

तो

  text   text 
     | --> |   | ----> |    
     |  | Servlet |result | Web Service 
     |  |   | <---- | 
Browser |  |   | 
     |  |   | forward | 
     |  |   | ------> | JSP 
     |       | 
     | rendered result  | 
     | <---------------------- | 
+0

धन्यवाद विल पर सब कुछ बनाना चाहेंगे, मैं वेब सेवा पर विचार मेरे पास है, उदाहरण के लिए .. jsp से कॉल करना चाहते हैं बहुत सरल वेब सेवा जो सबमिट करने के बाद मेरे index.jsp पेज में दर्ज टेक्स्ट को वापस प्रदर्शित करेगी, सबमिट करने पर क्लिक किए जाने पर वेब सेवा को वेब मान को कॉल करने के लिए मैं wsdl url का उपयोग कैसे करूं। – vikram

5

मैं वास्तव में एक JSP में तर्क के किसी भी प्रकार कोडिंग, एक वेब सेवा को फोन सहित अनुशंसा नहीं करते हैं, यह एक अच्छा अभ्यास नहीं है। जेएसपी एक व्यू टेक्नोलॉजी है और प्रस्तुति के लिए इस्तेमाल किया जाना चाहिए, व्यापार तर्क के लिए नहीं। इसके बजाय, आपको फॉर्म को सर्वलेट में सबमिट करना होगा, सबमिट किए गए पैरामीटर पुनर्प्राप्त करें, वेब सेवा पर कॉल करें और फिर परिणाम जेएसपी व्यू में प्रिंट करें। लेकिन चलो कोष्ठक बंद करते हैं।

चूंकि आपने टिप्पणी में वेबलॉगिक और कार्यशाला का उल्लेख किया है, तो मुझे लगता है कि आप उनका उपयोग कर रहे हैं :) वेबलॉगिक जेएक्स-डब्ल्यूएस का समर्थन करता है, इसलिए मैं इसे अपने क्लाइंट के लिए उपयोग करने का सुझाव देता हूं।

असल में, आपको पहले "क्लाइंट कलाकृतियों" उत्पन्न करने की आवश्यकता है (यानी कक्षाएं जिन्हें आप वेब सेवा का आह्वान करने के लिए उपयोग करेंगे)। ऐसा करने का एक तरीका clientgen चींटी कार्य का उपयोग करना है। विवरण के लिए Invoking a Web Service from a Stand-alone Client: Main Steps का संदर्भ लें (कार्यशाला से कक्षाएं उत्पन्न करना संभव होना चाहिए लेकिन मैं आपको यह नहीं बता सकता कि मैं इसका उपयोग कैसे नहीं करता)।

क्लाइंट कलाकृतियों के उत्पन्न होने के बाद, वेब सेवा को कॉल करना केक का एक टुकड़ा है। कोड निम्न के समान हो जाएगा:

ComplexService test = new ComplexService(), 
ComplexPortType port = test.getComplexPortTypePort(); 

BasicStruct in = new BasicStruct(); 

in.setIntValue(999); 
in.setStringValue("Hello Struct"); 

BasicStruct result = port.echoComplexType(in); 
System.out.println("echoComplexType called. Result: " + result.getIntValue() + ", " + result.getStringValue()); 
संबंधित मुद्दे