2011-05-14 3 views
6

मैं सर्वर साइड पर एक वर्ग है: ForumEntry, और मैं एक वेब सेवा जो ForumEntry की सूची लौटाता है:जेएक्स-डब्ल्यूएस क्लाइंट में सर्वर साइड क्लास का पुन: उपयोग कैसे करें?

@WebService(name="ForumGeneral",serviceName="ForumGeneralService") 
public class ForumGeneralService { 

    @WebMethod 
    public List<ForumEntry> getLatestTopics(String keyword,int count){ 
    ... 
    } 
} 

wsimport का उपयोग करते समय वेब सेवा ग्राहक उत्पन्न करने के लिए, यह ठीक खत्म, लेकिन एक नए ForumEntry प्रकार की बनाई वेब सेवा के आधार पर। यह समझ में आता है, क्योंकि वेब सेवा की प्रकृति यह है कि क्लाइंट और सर्वर पक्ष decoupled हैं।

लेकिन अगर मैं सर्वर पक्ष फोरमएन्ट्री का पुन: उपयोग करना चाहता हूं और क्लाइंट साइड डमी क्लास से बचने के लिए क्या करना चाहता हूं?

मुझे एक पोस्ट मिली: http://jamablog.blogspot.com/2007/08/how-to-make-jax-ws-client-reuse_22.html

विचार का पालन करें, मैं अपने सर्वर साइड ForumEntry वर्ग के लिए JAXB एनोटेशन कहा:

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "forumEntry", propOrder = { 
    "forumId", 
    "forumName", 
}) 
public class ForumEntry 

तो schemagen इस्तेमाल किया प्रकरण फ़ाइल उत्पन्न करने के लिए, तो यह गुजर बी पैरामीटर का उपयोग कर wsimport करने के लिए। लेकिन मुझे मिल गया उत्पन्न प्रकरण फ़ाइल के रूप में समस्या 'forumEntry' के लिए प्रविष्टियां हैं:

[ERROR] SCD "~forumEntry" didnt match any schema component 

मुझे लगता है कि इसका मतलब है 'forumEntry डबल्यूएसडीएल है, जो सही है में नहीं दिख रहा है:

<message name="getLatestTopics"> 
<part name="parameters" element="tns:getLatestTopics"></part> 
</message> 
<message name="getLatestTopicsResponse"> 
<part name="parameters" element="tns:getLatestTopicsResponse"></part> 
</message> 

तो सभी करते हैं सर्वर साइड क्लास का पुन: उपयोग करने के लिए यहां भागों को एक साथ फिट किया गया है?

उत्तर

0

आपको स्कीमा में फोरम एंटर्री क्लास जोड़ना चाहिए, ताकि क्लाइंट इसे उत्पन्न कर सके और उस सर्वर से उत्पन्न जेनरेट क्लास का उपयोग कर सके। या अपनी स्कीमा में एक नई कक्षा जोड़ें जिसमें फोरमएन्ट्री के समान डेटा शामिल है, और सर्वर को उन फोरम एंटर्री ऑब्जेक्ट्स से प्रतिक्रिया पर उन ऑब्जेक्ट्स बनाएं, और इसके बजाय उन बनाई गई ऑब्जेक्ट्स को वापस कर दें।

+0

धन्यवाद, लेकिन क्या आप अधिक विशिष्ट हो सकते हैं? मैं एक सूची लौट रहा हूं, जबकि फोरमेंट्री एक प्रकार है। दोनों पक्ष फोरमेट्री क्लास का उपयोग कैसे कर सकते हैं? धन्यवाद। – Andrew

+0

आपको क्लाइंट साइड पर फोरमएन्ट्री क्लास जेनरेट करना होगा और इसका इस्तेमाल करना होगा। –

+0

हालांकि यह सवाल पुराना है, लेकिन मेरे पास समान प्रश्न है। समस्या यह है कि मेरे पास पहले से ही कुछ वर्गों का उपयोग डेटा प्रकार के रूप में सर्वर साइड कोड का समूह है, और उन वर्गों में उपयोगिता विधियों का एक गुच्छा भी है। यदि सर्वर पक्ष क्लाइंट से जेनरेट क्लास का उपयोग करने के लिए बदल जाता है, तो यह एक बड़ा काम होगा ... –

संबंधित मुद्दे