我想通过JAX-WS返回包含List对象的ArrayList .
这是我的方法
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);
}
当我调用Web服务时显示以下错误:
javax.xml.ws.WebServiceException:javax.xml.bind.MarshalException - 包含链接异常:[com.sun.istack.SAXException2:类java.util.ArrayList或其任何超类都为此上下文所知 . javax.xml.bind.JAXBException:类java.util.ArrayList也不知道它的任何超类 . 在com.sun.xml.ws.message.jaxb.JAXBMessage.writePayloadTo(JAXBMessage.java:325) at com.sun.xml.ws.message.AbstractMessageImpl.writeTo(AbstractMessageImpl.java:142)at com.sun.xml.ws.encoding.StreamSOAPCodec.encode(StreamSOAPCodec.java:109)at com.sun.xml.ws .encoding.SOAPBindingCodec.encode(SOAPBindingCodec.java:278)at com.sun.xml.ws.transport.http.HttpAdapter.encodePacket(HttpAdapter.java:380)at com.sun.xml.ws.transport.http.HttpAdapter .access $ 100(HttpAdapter.java:92)at com.sun.xml.ws.transport.http.HttpAdapter $ HttpToolkit.handle(HttpAdapter.java:525)at com.sun.xml.ws.transport.http.HttpAdapter . 处理(HttpAdapter.java:285)com.sun.xml.ws.transport.http.server.WSHttpHandler.handleExchange(WSHttpHandler.java:106),位于com.sun.xml.ws.transport.http.server.WSHttpHandler . 在sun.net.htt的com.sun.net.httpserver.Filter $ Chain.doFilter(Filter.java:79)处理(WSHttpHandler.java:91) pserver.AuthFilter.doFilter(AuthFilter.java:83)at com.sun.net.httpserver.Filter $ Chain.doFilter(Filter.java:82)at sun.net.httpserver.ServerImpl $ Exchange $ LinkHandler.handle(ServerImpl . java:675)at com.sun.net.httpserver.Filter $ Chain.doFilter(Filter.java:79)at sun.net.httpserver.ServerImpl $ Exchange.run(ServerImpl.java:647)at java.util.concurrent .ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)at java.lang.Thread.run(Thread.java:745)引起:javax . xml.bind.MarshalException - 包含链接异常:[com.sun.istack.SAXException2:类java.util.ArrayList或其任何超类都是此上下文已知的 . javax.xml.bind.JAXBException:类java.util.ArrayList也不知道它的任何超类 . 在com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:269) at com.sun.xml.bind.v2.runtime.BridgeImpl.marshal(BridgeImpl.java:100)at com.sun.xml.bind.api.Bridge.marshal(Bridge.java:141)at com.sun.xml .ws.message.jaxb.JAXBMessage.writePayloadTo(JAXBMessage.java:317)... 18更多引起:com.sun.istack.SAXException2:类java.util.ArrayList或其任何超类都知道此上下文 . javax.xml.bind.JAXBException:类java.util.ArrayList或其任何超类都是此上下文已知的 . at com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:246)com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:261)at com.sun com.sun.xml中的com.sun.xml.bind.v2.runtime.property.ArrayElementNodeProperty.serializeItem(ArrayElementNodeProperty.java:65)中的.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:653)位于com.sun.xml的com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:155)中的.bind.v2.runtime.property.ArrayElementProperty.serializeListBody(ArrayElementProperty.java:168) .bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:340),位于com.sun.xml.bind.vind.v2的com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:696) .runtime.MarshallerImpl.write(MarshallerImpl.java:264)... 21更多引起:javax.xml.bind.JAXBException:类java.util.ArrayList以及它的任何超类都是这个上下文已知的 . at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getBeanInfo(JAXBContextImpl.java:594)at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:648)... 27更多
我尝试了一些JAXB,但无法解决我的问题 . 我不知道如何正确地做JXAB . 这是我学位的最终项目 .
1 回答
我认为使用List(它是ArrayList的父级)将起作用 . 请尝试使用以下代码: