Использование Java JAX-WS для возврата строкового массива? - PullRequest
1 голос
/ 11 января 2011

Я попытался создать простой веб-сервис, который при вызове должен возвращать массив String, но, похоже, он этого не делает, и я не могу понять, почему?

Этот веб-сервис выглядит так:

@WebService
public String[] getData(String testParam)
{
    String[] testArray= null;

    ....//DOES SOMETHING TO TEST PARAM//.....

    testArray= longtestString.split("-");
    return testArray;
}

Теперь я создаю клиент, который пытается вызвать эту функцию и получить массив строк, код для клиента:

myjaxpackage.GetDataService service = new myjaxpackage.GetDataService();
myjaxpackage.GetData port = service.getGetDataPort();
String testParameter= "this-is-a-test-string";
String[] result = port.getData(testParameter);  //Incompatible Types???

И все же ide (Netbeans) выдает мне ошибку, утверждая, что они несовместимые типы:

incompatible types
   required: java.lang.String[]
   found:    java.util.List<java.lang.String>

Кто-нибудь знает, почему этот код неправильный, функция должна возвращать строковый массив, и он вызывается и подается в один, так что я не вижу, как они могут быть несовместимыми?

Спасибо за любую помощь в этом вопросе.

Ответы [ 2 ]

1 голос
/ 11 января 2011

Связывание по умолчанию, используемое здесь, является JAXB - отображением последовательности по умолчанию является List, поэтому при отмене сортировки JAXB преобразует последовательность в ответ в список, который не совместим с String [].У вас есть два обходных пути:

  1. Чтобы изменить подпись на что-то, совместимое с JAXB, которое будет List<String>

  2. Использовать XMLJavaTypeAdapter чтобы указать, что вы хотите, чтобы типы были адаптированы - преобразовать список в массив перед возвратом - см. ссылку на javadoc

1 голос
/ 11 января 2011

Тип, который отображается на клиенте, не обязательно будет таким же, как сервер.Эти два даже не должны быть одним и тем же языком программирования.Все они преобразуются в и из XML, и каждая сторона может свободно преобразовывать свои нативные структуры в и из XML так, как пожелает.

...