Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > развернуть сервис на прием массива


Автор: Grig 31.7.2008, 10:33
Здравствуйте!

Есть такой класс:
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 чтобы сервис принимал массив?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)