java.util.List एक इंटरफ़ेस है, और JAXB इंटरफेस को नियंत्रित नहीं कर सकता


Answers

यदि वह आपके उद्देश्य को ठीक करता है तो आप हमेशा इस तरह एक सरणी परिभाषित कर सकते हैं:

YourType[]

JAXB निश्चित रूप से पता लगा सकता है कि क्या है और आप इसे तुरंत साइड क्लाइंट पक्ष का उपयोग करने में सक्षम होना चाहिए। मैं आपको यह करने के लिए भी सुझाव देता हूं, क्योंकि आप एक सूची से सर्वर से प्राप्त ऐरे को संशोधित नहीं कर पाएंगे, लेकिन वेब सेवा द्वारा प्रदान की गई विधियों के माध्यम से।

Question

मुझे अपने अनुप्रयोग को लागू करने की कोशिश करते समय निम्नलिखित अपवाद प्राप्त करना था:

Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 2 counts of     IllegalAnnotationExceptions
java.util.List is an interface, and JAXB can't handle interfaces.
this problem is related to the following location:
    at java.util.List
    at private java.util.List     foobar.alkohol.register.webservice.jaxws.GetRelationsFromPersonResponse._return
    at     foobar.alkohol.register.webservice.jaxws.GetRelationsFromPersonResponse
java.util.List does not have a no-arg default constructor.
    this problem is related to the following location:
        at java.util.List
        at private java.util.List foobar.alkohol.register.webservice.jaxws.GetRelationsFromPersonResponse._return
    at     foobar.alkohol.register.webservice.jaxws.GetRelationsFromPersonResponse


मेरा कोड ठीक काम करता है जब तक कि मैं वापस सूची को सूची से सूची <List> RelationCanonical >> बदल देता हूं

यहां आंशिक webservice है:


@Name("relationService")
@Stateless
@WebService(name = "RelationService", serviceName = "RelationService")
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
public class RelationService implements RelationServiceLocal {

    private boolean login(String username, String password) {
        Identity.instance().setUsername(username);
        Identity.instance().setPassword(password);
        Identity.instance().login();
        return Identity.instance().isLoggedIn();
    }

    private boolean logout() {
        Identity.instance().logout();
        return !Identity.instance().isLoggedIn();
    }

    @WebMethod
    public List<List<RelationCanonical>> getRelationsFromPerson(@WebParam(name = "username")
    String username, @WebParam(name = "password")
    String password, @WebParam(name = "foedselsnummer")
    String... foedselsnummer) {

......
......
......
}


मैंने @SOAPBinding को हटाने और डिफ़ॉल्ट का प्रयास करने की कोशिश की है, लेकिन एक ही परिणाम तब होता है। किसी भी मदद की सराहना

अद्यतन करें

मुझे कुछ नोट करना है मैंने सभी सूची को अर्रे सूची में बदल दिया, और फिर इसे संकलित किया। कारण है कि मैं कहता हूं संकलित और काम नहीं किया क्योंकि यह अजीब व्यवहार करता है मुझे एक प्रकार की वस्तु मिलती है: RelationServiceStub.ArrayList लेकिन ऑब्जेक्ट के पास कोई तरीका नहीं है या किसी सूची के रूप में व्यवहार नहीं करता है। मैंने इसे सूची में डालने की भी कोशिश की लेकिन यह काम नहीं किया।

ध्यान दें कि इसके बाद मैंने एक्सिस 2 और wsdl2java का उपयोग किया है, हाँ, अब यह संकलित है, लेकिन मुझे पता नहीं है कि डेटा कैसे निकालेगा।




आप आंतरिक "सूची" के बजाय "ArrayList" का उपयोग कर सकते हैं