2012-03-01 5 views
1

Я разработал webservice, используя Apache Axis2, и файл WSDL принимает структуру данных ArrayList. Однако, в файле WSDL отображается тип структура данных следующим образом:Разработка webservice с использованием Apache Axis2

<xs:complexType> 
<xs:sequence> 
    <xs:element minOccurs="0" name="myDetails" nillable="true" type="xs:anyType" /> 
</xs:sequence> 
</xs:complexType> 

Я пытаюсь создать класс клиента с помощью Apache Axis2 на основе моего сгенерированного файла WSDL. Я пытаюсь переслать детали ArrayList следующим образом:

ArrayList<String> myDetails = new ArrayList<String>(); 
myDetails.add("param1,param2,param3"); 

И пересылкой выше ArrayList как myDetails.toArray() для класса клиента следующим образом:

WebserviceStub ws = new WebserviceStub("http://localhost:8080/Service/services"); 
CustomerDetails cd = new CustomerDetails(); 
cd.setMyDetails(myDetails.toArray()); 
CustomerDetailsResponse cds = ws.customerDetails(cd); 

Если я запускаю выше класс клиента в качестве Java приложения, то он показывает следующее сообщение об ошибке:

[INFO] Unable to sendViaPost to url[http://localhost:8080/Service/services/] 
org.apache.axis2.AxisFault: Unknow type can not serialize 
    at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430) 
    at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:83) 
    at org.apache.axis2.transport.http.AxisRequestEntity.writeRequest(AxisRequestEntity.java:84) 
    at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499) 
    at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114) 
    at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096) 
    at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398) 
    at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171) 
    at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397) 
    at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346) 
    at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:557) 
    at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:199) 
    at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:76) 
    at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:400) 
    at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:225) 
    at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:438) 
    at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:402) 
    at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229) 
    at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165) 
Caused by: javax.xml.stream.XMLStreamException: Unknow type can not serialize 
    at org.apache.axis2.databinding.utils.ConverterUtil.serializeAnyType(ConverterUtil.java:1456) 
    at org.apache.axis2.databinding.ADBDataSource.serialize(ADBDataSource.java:93) 
    at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerialize(OMSourcedElementImpl.java:695) 
    at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:563) 
    at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:874) 
    at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.serializeInternally(SOAPEnvelopeImpl.java:283) 
    at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:245) 
    at org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume(OMSerializableImpl.java:193) 
    at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:79) 
    ... 19 more 

Можно ли передать ArrayList в качестве параметра для веб-сервиса с помощью Axis2? Имеет ли он какие-либо ограничения? Любые идеи будут высоко оценили

ответ

0

способ использования ArrayList на веб-службу поддержки

1.It больше Набор затем списка массива в коллекции Class.

2.you необходимо создать сериализированный класс как на стороне на стороне сервера, используя @XmlRootElement и обеспечивая этот поглотитель массива и сеттер как на клиент и пользователя сторону сериализовать ...

Смежные вопросы