У меня проблема с возвратом ArrayList из моего веб-сервиса (Java).
Я написал тестовый веб-сервис и клиент, который его использует. Кажется, что все работает нормально - это то, что клиент вызывает сервер, а сервер получает запрос операции.
Однако я написал простой метод, который я хочу, чтобы он возвращал ArrayList.
У меня есть определение интерфейса следующим образом:
@WebService
@SOAPBinding(style = Style.RPC)
public interface ISQLServerConnectionWS {
@WebMethod
ArrayList getSimpleArrayList();
}
У меня есть серверная реализация для возврата ArrayList:
@WebService(endpointInterface="WebServices.ISQLServerConnectionWS")
public class SQLConnectionWSServer
implements ISQLServerConnectionWS {
@Override
public ArrayList getSimpleArrayList() {
ArrayList al = new ArrayList();
al.add( "This" );
al.add( "is" );
al.add( "a" );
al.add( "test" );
return al;
}
}
И, наконец, мой клиент позвонил ему:
ArrayList results = server.getSimpleArrayList();
Сервер хорошо заполняет список массивов. Однако на стороне клиента ArrayList пуст. Имеет размер 0.
Если я проверю WSDL по моему URL (http://127.0.0.1:9876/myservice-sql?wsdl) для executeSelectSQL, он будет выглядеть так:
<message name="executeSelectSQLResponse">
<part name="return" type="tns:arrayList"/>
</message>
Я что-то упускаю из виду?
Edit:
Однако, если у меня есть веб-метод, определяется в интерфейсе как:
@WebMethod
String getAString();
и реализация сервера:
@Override
public String getAString() {
return "hello there";
}
тогда это работает нормально - "hello there"
получено на клиенте.