Здравствуйте! Есть такой класс: ArrayTest.javaКод | package soapinterop.org;
public class ArrayTest { public String[] EchoArray() { String[] arr_str = new String[1]; arr_str[0] = "JAVA1jhh"; return arr_str; } public String[] inArray(java.lang.String[] inputStringArray) { inputStringArray[0] = "in"; return inputStringArray; } }
|
server-config.wsddКод | <service name="array" provider="java:RPC" style="wrapped" use="literal"> <namespace>http://soapinterop.org</namespace> <parameter name="className" value="soapinterop.org.ArrayTest" /> <parameter name="allowedMethods" value="*" />
<typeMapping xmlns:ns="http://soapinterop.org" qname="ns:ArrayOfString" type="java:java.lang.String[]" serializer="org.apache.axis.encoding.ser.ArraySerializerFactory" deserializer="org.apache.axis.encoding.ser.ArrayDeserializerFactory" encodingStyle="" />
<typeMapping xmlns:ns="http://soapinterop.org" qname="ns:array" type="java:java.lang.String[]" serializer="org.apache.axis.encoding.ser.ArraySerializerFactory" deserializer="org.apache.axis.encoding.ser.ArrayDeserializerFactory" encodingStyle="" />
<typeMapping xmlns:ns="http://soapinterop.org" qname="ns:ArrayOf_xsd_string" type="java:java.lang.String[]" serializer="org.apache.axis.encoding.ser.ArraySerializerFactory" deserializer="org.apache.axis.encoding.ser.ArrayDeserializerFactory" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </service>
|
функция EchoArray передает массив нормально, а принять массив функцией inArray сервис не может. Вот какими сообщениями клиент с сервисом обменялись: Клиент:Код | POST /services/array HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 2.0.50727.42) VsDebuggerCausalityData: uIDPo0ubwn+2RaJEpxM5yp/pa9MAAAAAZ7kRW9NkiUmEcV1IY9afzRGOcHibrHpIsB9/PDtwmW0ACAAA Content-Type: text/xml; charset=utf-8 SOAPAction: "" Host: localhost:8001 Content-Length: 341 Expect: 100-continue
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body> <inArray xmlns="http://soapinterop.org"> <inputStringArray>JAVA1jhh</inputStringArray></inArray> </soap:Body> </soap:Envelope>
|
Сервис:Код | HTTP/1.1 500 Internal Server Error Server: Apache-Coyote/1.1 Content-Type: text/xml;charset=utf-8 Transfer-Encoding: chunked Date: Thu, 31 Jul 2008 07:06:28 GMT Connection: close
22c <?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <soapenv:Fault> <faultcode>soapenv:Server.userException</faultcode> <faultstring>org.xml.sax.SAXException: Found character data inside an array element while deserializing</faultstring> <detail><ns1:hostname xmlns:ns1="http://xml.apache.org/axis/">class_ivc1</ns1:hostname></detail> </soapenv:Fault> </soapenv:Body> </soapenv:Envelope> 0
|
как можно настроить wsdd чтобы сервис принимал массив?
|