powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Axis2: возвращение коллекции
6 сообщений из 6, страница 1 из 1
Axis2: возвращение коллекции
    #34313106
Tsahes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста, как возвращать Collection из axis?
Сейчас появляется исключение:
org.apache.axis2.AxisFault: Exception occurred while trying to invoke service method getCollection
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:271)
at org.apache.axis2.description.OutInAxisOperationClient.execute(OutInAxisOperation.java:202)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:579)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:508)

Это сервис:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 public   class  TestWebService {

     public  String getString() {
         return  "test";
    }

     public  ArrayList getCollection() {
         return   new  ArrayList();
    }
}

Способ доступа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
 import  java.util.ArrayList;
 import  javax.xml.namespace.QName;
 import  org.apache.axis2.AxisFault;
 import  org.apache.axis2.addressing.EndpointReference;
 import  org.apache.axis2.client.Options;
 import  org.apache.axis2.rpc.client.RPCServiceClient;

 public   class  WebServiceRPCClient {

     public   static   void  main(String[] args1)
             throws  AxisFault {
         try  {
            RPCServiceClient serviceClient =  new  RPCServiceClient();

            Options options = serviceClient.getOptions();

            EndpointReference targetEPR =  new  EndpointReference(
                                                                "http://127.0.0.1:7001/axis2/services/PaymentWebService");
            options.setTo(targetEPR);

            QName opEntry =  new  QName("http://me.ru/xsd", "getCollection");
            Object[] opArgs =  new  Object[] {};
             Class [] returnTypes =  new   Class [] {ArrayList. class };

            Object[] response = serviceClient.invokeBlocking(opEntry, opArgs, returnTypes);

            ArrayList result = (ArrayList) response[ 0 ];
        }
         catch  (Exception e) {
            e.printStackTrace();
        }
    }
}
...
Рейтинг: 0 / 0
Axis2: возвращение коллекции
    #34313856
Фотография Изя Шниперсон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исключение возникает когда по SOAP пытаешься передать объект с данным-членом ArrayList ?
...
Рейтинг: 0 / 0
Axis2: возвращение коллекции
    #34313871
Фотография Изя Шниперсон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда деплоишь службу то нужно


Там прописывать сериализаторы и десериализаторы для сложных объектов коими являются ArrayList
Сериализаторы и десериализаторы нужно перед этим написать.
Т.е. если ты хочешь ArrayList передавать по SOAP - пиши для него сериализатор и десериализатор.

Совет - выкинь ArrayList из передаваемого объекта и запихивай все вместо ArrayList в массив.
Постарайся чтоб в передаваемом объекте было поменьше import ***,
в идеале чтоб вообще не было, т.к. SOAP будет пытаться отыскать для всех импортируемых классов
сериализаторы и десериализаторы .
...
Рейтинг: 0 / 0
Axis2: возвращение коллекции
    #34314739
Tsahes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, видимо, стоит отказатся от коллекций. Но исключение возникает при передаче даже пустого ArrayList.
Не мог бы кто-нибудь подсказать, как на клиенте, использующем POJO-объекты, для axis2 указывать сериализаторы и десериализаторы, не могу найти в документации.
...
Рейтинг: 0 / 0
Axis2: возвращение коллекции
    #34314759
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsahesСпасибо, видимо, стоит отказатся от коллекций. Но исключение возникает при передаче даже пустого ArrayList.
Не мог бы кто-нибудь подсказать, как на клиенте, использующем POJO-объекты, для axis2 указывать сериализаторы и десериализаторы, не могу найти в документации.

В первом аксисе там было что-то типа синглтона в котором все десериализаторы хранятся и маппятся на типы.
...
Рейтинг: 0 / 0
Axis2: возвращение коллекции
    #34315388
Фотография Изя Шниперсон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsahesСпасибо, видимо, стоит отказатся от коллекций. Но исключение возникает при передаче даже пустого ArrayList.

Без описаний в wsdd файле можно только передавать примитивные типы.
JavaBean нужно уже описывать в wsdd файле, но без указания сериализаторов и десериализаторов.
AXIS будет использовать стандартные сериализаторы и десереализаторы для JavaBean.
Остальные классы нужно описывать в wsdd файле и указывать для них сериализатор и десереализатор, которые должны быть написаны Вами.
Пишите свой сериализатор и десереализатор для ArrayList тогда он будет передаваться без выбрасывания исключений.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Axis2: возвращение коллекции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]