Saturday, 15 February 2014

java - @SOAPBinding(style = Style.RPC) for web methods returning ArrayList -


यह मेरा वेब सेवा कोड था

  import java.util.ArrayList; आयात javax.jws.WebService; आयात javax.jws.soap.SOAPBinding; आयात javax.jws.soap.SOAPBinding.Style; @WebService @SOAPBinding (शैली = शैली। आरपीसी) सार्वजनिक श्रेणी ProductCatalog {सार्वजनिक ऐरे लिस्ट & lt; स्ट्रिंग & gt; GetProductCategories () {ArrayList & lt; स्ट्रिंग & gt; श्रेणियां = नए अर्रेलिस्ट & lt; स्ट्रिंग & gt; (); categories.add ( "किताबें"); categories.add ( "फिल्मों"); categories.add ( "संगीत"); वापसी श्रेणियां; }} मैंने `@SOAPBinding (शैली = शैली। आरपीसी)` एनोटेशन दिया है, लेकिन यह उत्पन्न wsdl में कोई प्रभाव नहीं दिखा रहा है।  

उत्पन्न wsdl बाहरी से एक स्कीमा केवल स्थान

  & lt; प्रकार & gt; & LT; XSD: स्कीमा & gt; & Lt; xsd: आयात नेमस्पेस = "http://symp.com/" स्कीमा स्थान = "http: // rajasekhar_pc: 9090 / न्यूटेस्टमार्ट / उत्पादकेलिए सेवा? Xsd = 1" / & gt; & Lt; / XSD: स्कीमा & gt; & Lt; / प्रकार & gt;  

लेकिन जब मैं वेब विधि वापसी प्रकार को स्ट्रिंग में बदलता हूं तो इसके कार्य ठीक तरह से

  @WebService @SOAPBinding (style = Style.RPC) सार्वजनिक वर्ग ProductCatalog {सार्वजनिक स्ट्रिंग getProductCategories () {वापसी "हैलो वर्ल्ड"; }}  

और wsdl में परिवर्तन होता है और यह किसी भी बाह्य दस्तावेज़ को संदर्भित नहीं करता है

  & lt; types / & gt; & Lt; संदेश का नाम = "getProductCategories" / & gt; & Lt; संदेश का नाम = "getProductCategoriesResponse" & gt; & Lt; part name = "return" type = "xsd: स्ट्रिंग" / & gt; & Lt; / संदेश & gt;  

रिटर्न प्रकार सरणी सूची के लिए आरपीसी शैली प्राप्त करने का कोई तरीका है ... और यहां तक ​​कि स्टिलेज साबुन इंडेड wsdl को भी आरे-लिस्ट ऑब्जेक्ट वापस आ रहा है ... मैं डेटा चाहता हूं

< P> /////////// नवीनीकृत कोड ///////////

  आयात करें java.util.ArrayList; आयात javax.jws.WebMethod; आयात javax.jws.WebService; आयात javax.jws.soap.SOAPBinding; आयात javax.jws.soap.SOAPBinding.Style; @WebService @SOAPBinding (शैली = शैली। आरपीसी) सार्वजनिक वर्ग रोगियों की सूची {@WebMethod सार्वजनिक BeanList getpatientList () {बीनिलिस्ट बीन = नया बीनलिस्ट (); ArrayList & LT; स्ट्रिंग & gt; PatientList = नया अर्रेलिस्ट & lt; स्ट्रिंग & gt; (); patientList.add ( "अजय"); patientList.add ( "विजय"); patientList.add ( "कुमारी"); bean.setPatientList (patientList); // वापसी बीन; वापसी बीन; }} Import java.util.ArrayList; सार्वजनिक वर्ग बीनिलिस्ट {निजी ऐरे लिस्ट & lt; स्ट्रिंग & gt; patientList; सार्वजनिक अर्रेलिस्ट & lt; स्ट्रिंग & gt; GetPatientList () {रिटर्न रोगी सूची; } सार्वजनिक शून्य सेट प्रातिनिधिक सूची (अर्रेलिस्ट & lt; स्ट्रिंग & gt; रोगी सूची) {this.patientList = patientList; }}  

यहां भी यह देता है

  & lt; प्रकार & gt; & LT; XSD: स्कीमा & gt; & Lt; xsd: आयात नामस्थान = "http://symp.com/" स्कीमा स्थान = "http: // rajasekhar_pc: 9090 / न्यूटेस्टमार्ट / पतियां लिस्ट सेवा" एक्सएसडी = 1 "/ & gt; & Lt; / XSD: स्कीमा & gt; & Lt; / प्रकार & gt; लेकिन मैं चाहता हूं कि wsdl को RPC शैली में होना चाहिए  

एक सरणी के बजाय एक ArrayList जैसा कि JAXB संग्रह को शीर्ष-स्तरीय ऑब्जेक्ट के रूप में नहीं संभाल सकता, केवल सेम के गुणों के रूप में।

कृपया ध्यान दें कि जेएडएस-आरएसपी / एन्कोडेड में मैसेजिंग मोड के रूप में समर्थित नहीं है। यदि आप SOAP एन्कोडेड संदेश भेजना चाहते हैं या RPC / एन्कोडेड शैली WSDL बनाते हैं तो आप JAX-RPC या Apache axis v1 का उपयोग कर सकते हैं।


No comments:

Post a Comment