У меня возникла проблема с возвратом 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"
получен на клиенте.