org.apache.axis2.AxisFault: тип Unknow не может сериализоваться при передаче массива объектов в веб-сервис - PullRequest
3 голосов
/ 28 июля 2011

Я создал веб-сервис, который принимает DTO в качестве параметра.И DTO содержит массив объектов.Я создал WSDL, скелеты и клиентов.Я пытаюсь вызвать веб-сервис, если передам массив строк, скажем: Serializable [] array = new String [] {"a", "n"};все работает нормально.

Теперь мое требование - передать массив HashMaps. Я не могу этого сделать, хотя HashMap реализует Serializable.

 HashMap<String, String> hashMap1 = new HashMap<String, String>();
            HashMap<String, String> hashMap2 = new HashMap<String, String>();
            hashMap1.put("key1", "value1");
            hashMap2.put("key1", "value1");
            Serializable[] maps = new HashMap[] { hashMap1, hashMap2 };
            myDTO.setParams(maps);

            request.setDTO(myDTO);
            InvokeServiceResponse response = stub.serviceMethod(request);

Я использую Axis2.2.1.5, Tomcat 6 и Eclipse Helios.

Трассировка стека, которую я здесь привожу для справки.

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)

Ответы [ 2 ]

2 голосов
/ 30 июля 2011

Я использую Asix2 для разработки проекта, на самом деле у меня нет большого опыта работы с Axis2, HashMap - сложный объект в Java, некоторые базовые объекты поддерживаются Asix2, например, простой Array, поэтому не пытайтесь использовать сложные объектыJava, когда вы используете Axis. Я думаю, что ваш запрос не может получить, потому что оси в последнее время не поддерживают его. Спасибо и с уважением.

0 голосов
/ 28 июля 2011

Поиск трассировки стека в журналах сервера; это ошибка на стороне клиента.

Кроме того, если вы Google "Неизвестный тип не может сериализовать", вы найдете много потоков.

...