JAX-WSを介してListオブジェクトを含むArrayListを返したいとします。Jax-ws WebサービスからリストのArrayListを返すことができません
javax.xml.ws.WebServiceException::私は、Webサービスを呼び出すときに
この
は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); }
次のエラーが表示され、私の方法であるjavax.xml.bind.MarshalException - リンクされて例外:[com.sun.istack.SAXException2:class java.util.ArrayListも、そのスーパークラスのどれもがこの コンテキストに認識されていません。 javax.xml.bind.JAXBException:クラスjava.util.ArrayListも、 スーパークラスもこのコンテキストで認識されていません。] でcom.sun.xml.ws.message.jaxb.JAXBMessage.writePayloadTo(JAXBMessage.java: 325) com.sun.xml.ws.message.AbstractMessageImpl.writeTo(AbstractMessageImpl.java:142で ) com.sun.xml.ws.encoding.StreamSOAPCodec.encode(StreamSOAPCodec.java:109で) で com.sun.xml.ws.encoding.SOAPBindingCodec.encode で com.sun.xml.ws.transport.http.HttpAdapter.encodePacketで(SOAPBindingCodec.java:278) (HttpAdapter.java:380) コム.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.handle(HttpAdapter.java: における285) com.sun.xml.ws.transport.http.server.WSHttpHandler.handleでcom.sun.xml.ws.transport.http.server.WSHttpHandler.handleExchange(WSHttpHandler.java:106) ( WSHttpHandler.java:91) com.sun.net.httpserver.Filter $ Chain.doFilter(Filter.java:79)at sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:83)at com。 sun.net.httpserver.Filter $ Chain.doFilter(Filter.java:82): sun.net.httpserver.ServerImpl $ Exchange $ LinkHandler.handle(ServerImpl.java:675) com.sun.net.httpserver.Filter $ Chain.doFilter(Filter.java:79) sun.net.httpserver.ServerImpl $ Exchange.run(ServerImpl.java:647) 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:class java.util.ArrayListもそのスーパークラスもこのコンテキストには知られていません。 コンテキスト。 javax.xml.bind.JAXBException:クラスjava.util.ArrayListも、 スーパークラスもこのコンテキストで認識されていません。] でcom.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java: (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またはanyそのスーパークラスはこのコンテキストに知られている コンテキストです。 javax.xml.bind.JAXBException:クラスjava.util.ArrayListも スーパークラスもこのコンテキストでは認識されていません。 com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:246) at com.sun.xml。bind.v2.runtime.XMLSerializer.reportError com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:653)で(XMLSerializer.java:261) com.sun.xmlで 。 com.sun.xml.bind.v2.runtime.property.ArrayElementProperty.serializeListBody(ArrayElementProperty.java:168) コムで でbind.v2.runtime.property.ArrayElementNodeProperty.serializeItem(ArrayElementNodeProperty.java:65) 。 で com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:340) でsun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:155) com.sun.xml.bind.v2.runtime.XMLSerializer.child AsXsiType(XMLSerializer.java:696) at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:264) ... 21他に発生した要因:javax.xml.bind.JAXBException: java.util.ArrayListもそのスーパークラスもこのコンテキストには知られていません。 コンテキスト。 com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:648)で com.sun.xml.bind.v2.runtime.JAXBContextImpl.getBeanInfo(JAXBContextImpl.java:594) で ... 27 more
JAXBを試しましたが、私の問題を解決できませんでした。私はJXABを正しく行う方法を知らない。これは私の学位の最終プロジェクトです。
メソッドallTokens()の実装を共有できますか? –
どちらをお望みですか?これは私のサーバー側のメソッドです。 私はApache Tomcat 7.0.59を使用しています –
リスト要素を適切に表現するためのクラスであるNameNumberを使うか、フラットなリストだけを表現するクラスである 'List'を使う方がはるかに簡単です。つまり '' Indunil "22"、 "Tharanga"、 "20"などを1つの 'List