Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Axis2: возвращение коллекции / 6 сообщений из 6, страница 1 из 1
07.02.2007, 15:57:25
    #34313106
Tsahes
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Axis2: возвращение коллекции
Подскажите, пожалуйста, как возвращать 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
07.02.2007, 18:51:12
    #34313856
Изя Шниперсон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Axis2: возвращение коллекции
Исключение возникает когда по SOAP пытаешься передать объект с данным-членом ArrayList ?
...
Рейтинг: 0 / 0
07.02.2007, 18:55:21
    #34313871
Изя Шниперсон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Axis2: возвращение коллекции
Когда деплоишь службу то нужно


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

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

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

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


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