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


Автор: Tsahes 7.2.2007, 16:12
Подскажите, пожалуйста, как вернуть коллекцию web-сервиса?
Сейчас появляется исключение:
Код

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)


Это сервис:

Код

public class TestWebService {

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

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

Способ доступа:

Код

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();
        }
    }
}

Автор: Tony 7.2.2007, 16:40
Несколько раз уже обсуждалось.Пошерсти этот форум

Автор: Tsahes 7.2.2007, 16:52
Ранее смотрел.
В качестве класса возвращаемого значения указан конкретный класс ArrayList, а не класс интерфейса Collection.
Единственное, возвращаемый класс не является JavaBean...
Значит, коллекции, а не массива значений, не вернуть?

Автор: Tony 7.2.2007, 19:10
Цитата(Tsahes @ 7.2.2007,  16:52)
Ранее смотрел.
В качестве класса возвращаемого значения указан конкретный класс ArrayList, а не класс интерфейса Collection.
Единственное, возвращаемый класс не является JavaBean...
Значит, коллекции, а не массива значений, не вернуть?

Тоесть у тебя ошибка при пересилке листа ? Я правельно понял? 

Автор: Tsahes 8.2.2007, 09:53
Цитата(Tony @  7.2.2007,  19:10 Найти цитируемый пост)
Тоесть у тебя ошибка при пересилке листа ? Я правельно понял?

Да, передается экземпляр класса ArrayList, получается экземпляр класса ArrayList. Более того, коллекция пуста. Может, необходимо как-то указать сериализаторы/десериализаторы? Только не вижу, где их устанавливать.

Автор: Tony 8.2.2007, 10:49
... сериализаторы/десериализаторы?  Да. Обязательно.

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