2016-04-09 7 views
3

Ich möchte ArrayList zurückgeben, die List-Objekte über JAX-WS enthält.Kann ArrayList von Listen nicht von Jax-ws-Webdienst zurückgeben

Dies ist meine Methode

public ArrayList allTokens() { 
ArrayList allItems = new ArrayList(); 

List myList1 = new ArrayList(); 
myList1.add("Indunil"); 
myList1.add(22); 

List myList2 = new ArrayList(); 
myList2.add("Tharanga"); 
myList2.add(20); 

//adding lists to all items 
allItems.add(myList1); 
allItems.add(myList2); 

return(allItems); 
} 

Schleppfehler zeigt, wird, wenn ich Web-Service-Aufruf:

javax.xml.ws.WebServiceException: javax.xml.bind.MarshalException - mit verknüpften Ausnahme: [com.sun.istack.SAXException2: class java.util.ArrayList noch eine seiner Super-Klassen ist diesem Kontext bekannt. javax.xml.bind.JAXBException: class java.util.ArrayList noch eine beliebige seiner Super-Klasse ist in diesem Zusammenhang bekannt.] unter com.sun.xml.ws.message.jaxb.JAXBMessage.writePayloadTo (JAXBMessage.java: 325) bei com.sun.xml.ws.message.AbstractMessageImpl.writeTo (AbstractMessageImpl.java:142) bei com.sun.xml.ws.encoding.StreamSOAPCodec.encode (StreamSOAPCodec.java:109) bei com.sun.xml.ws.encoding.SOAPBindingCodec.encode (SOAPBindingCodec.java:278) bei com.sun.xml.ws.transport.http.HttpAdapter.encodePacket (HttpAdapter.java:380) bei com .sun.xml.ws.transport.http.HttpAdapter.access $ 100 (HttpAdapter.java:92) um com.sun.xml.ws.transport.http.HttpAdapter $ HttpToolkit.handle (HttpAdapter.java:525) um com.sun.xml.ws.transport.http.HttpAdapter.handle (HttpAdapter.java: 285) bei com.sun.xml.ws.transport.http.server.WSHttpHandler.handleExchange (WSHttpHandler.java:106) bei com.sun.xml.ws.transport.http.server.WSHttpHandler.handle (WSHttpHandler.java:91) bei com.sun.net.httpserver.Filter $ Chain.doFilter (Filter.java:79) um sun.net.httpserver.AuthFilter.doFilter (AuthFilter.java:83) um com. sun.net.httpserver.Filter $ Chain.doFilter (Filter.java:82) um sun.net.httpserver.ServerImpl $ Exchange $ LinkHandler.handle (ServerImpl.java:675) bei com.sun.net.httpserver.Filter $ Chain.doFilter (Filter.java:79) um sun.net.httpserver.ServerImpl $ Exchange.run (ServerImpl.java:647) um java.util.concurrent. ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) bei java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) bei java.lang.Thread.run (Thread.java:745) verursacht durch: javax.xml.bind.MarshalException - mit verknüpfter Ausnahme: [com.sun.istack.SAXException2: class java.util.ArrayList noch eine seiner Super-Klasse ist diesem Kontext bekannt. javax.xml.bind.JAXBException: class java.util.ArrayList noch eine beliebige Superklasse ist in diesem Zusammenhang bekannt.] unter com.sun.xml.bind.v2.runtime.MarshallerImpl.write (MarshallerImpl.java: 269) unter com.sun.xml.bind.v2.runtime.BridgeImpl.marshal (BridgeImpl.java:100) unter com.sun.xml.bind.api.Bridge.marshal (Bridge.java:141) um com.sun.xml.ws.message.jaxb.JAXBMessage.writePayloadTo (JAXBMessage.java:317) ... 18 mehr Verursacht von: com.sun.istack.SAXException2: Klasse java.util.ArrayList noch irgendeine von seine Superklasse ist diesem Kontext bekannt. javax.xml.bind.JAXBException: class java.util.ArrayList noch eine beliebige seiner Super-Klasse ist in diesem Zusammenhang bekannt. unter com.sun.xml.bind.v2.runtime.XMLSerializer.reportError (XMLSerializer.java:246) um com.sun.xml.bind.v2.runtime.XMLSerializer.reportError (XMLSerializer.java:261) bei com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType (XMLSerializer.java:653) bei com.sun.xml. bind.v2.runtime.property.ArrayElementNodeProperty.serializeItem (ArrayElementNodeProperty.java:65) bei com.sun.xml.bind.v2.runtime.property.ArrayElementProperty.serializeListBody (ArrayElementProperty.java:168) bei com. sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody (ArrayERProperty.java:155) bei com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody (ClassBeanInfoImpl.java:340) bei com.sun.xml.bind.v2.runtime.XMLSerializer.child AsXsiType (XMLSerializer.java:696) bei com.sun.xml.bind.v2.runtime.MarshallerImpl.write (MarshallerImpl.java:264) ... 21 mehr verursacht durch: javax.xml.bind.JAXBException: Klasse java.util.ArrayList noch einer seiner Super-Klasse ist diesem Kontext bekannt. bei com.sun.xml.bind.v2.runtime.JAXBContextImpl.getBeanInfo (JAXBContextImpl.java:594) bei com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType (XMLSerializer.java:648) ... 27 mehr

Ich habe versucht, einige JAXB, aber nicht in der Lage, mein Problem zu lösen. Ich weiß nicht, wie man JXAB richtig macht. Dies ist für mein Abschlussprojekt meines Abschlusses.

+0

könnten Sie die Implementierung der Methode allTokens() teilen? –

+0

Welchen möchten Sie? Dies ist die Methode auf meiner Serverseite. Ich benutze Apache Tomcat 7.0.59 –

+1

Es wäre viel einfacher, entweder eine "Liste " mit NameNumber eine Klasse für die Darstellung der Liste Elemente * richtig *, oder nur eine flache Liste, dh Speichern von "" Indunil ",' 22 ', '" Tharanga "', '20' usw. in eine" Liste ", vorausgesetzt, dass Sie aus dem Muster string-int-string-int wissen können, was was ist. – laune

Antwort

0

Ich denke, die Verwendung der Liste (die Eltern von ArrayList ist) wird funktionieren. Bitte versuchen Sie es mit folgendem Code:

public static List<List> allTokens() { 
    List<List> allItems = new ArrayList<List>(); 

    List<String> myList1 = new ArrayList<String>(); 
    myList1.add("Indunil"); 
    myList1.add("22"); 

    List<String> myList2 = new ArrayList<String>(); 
    myList1.add("Tharanga"); 
    myList1.add("20"); 

    //adding lists to all items 
    allItems.add(myList1); 
    allItems.add(myList2); 

    return(allItems); 
} 
+0

Ich versuchte Liste der Listen, der gleiche Fehler wird beim Aufruf von Web Service angezeigt. –

+0

Können Sie jetzt überprüfen – KayV

+0

Ich möchte verschiedene Datentypen innerhalb der Liste senden. Liste myList1 = new ArrayList(); myList1.add ("Indunil"); // Zeichenkette myList1.add (22); // int –