Что мне нужно сделать, чтобы принять параметр массива в веб-сервисе?

WS для создания веб-сервиса. В качестве параметров я принимаю две строки и массив объектов, тип которых является классом в моем проекте.

У меня есть интерфейс и реализация веб-сервиса, и он похож на это:

@WebMethod(operationName = "getStuff")
@WebResult(name = "result")
 Mix getStuff(
    @WebParam(name = "string1") String one,
    @WebParam(name = "string2") String two,
    @WebParam(name = "stuff") Stuff[] stuff
);

Я возвращаю объект типа Mix, который является классом в моем проекте, и я принимаю массив типа Stuff, который является другим классом в моем проекте. Тестирование с помощью java не является проблемой, однако, когда кто-то другой пытается использовать службу или я пытаюсь отправить запрос с soapUI, массив всегда имеет значение null. Что мне нужно сделать, чтобы тот, кто использует мою услугу, мог правильно отправить массив типа Stuff? Нужно ли мне выполнять некоторые настройки с помощью JAXB?


person Barry    schedule 19.10.2009    source источник
comment
Основная проблема была с классом Stuff. Я забыл включить конструктор по умолчанию, что привело к моим проблемам. В итоге я также изменил код на список.   -  person Barry    schedule 03.11.2009


Ответы (1)


JAXB2 использует списки, а не массивы, поэтому вам следует заменить подпись на

@WebMethod(operationName = "getStuff")
@WebResult(name = "result")
 Mix getStuff(
    @WebParam(name = "string1") String one,
    @WebParam(name = "string2") String two,
    @WebParam(name = "stuff") java.util.List<Stuff> stuff
);

Также убедитесь, что Mix и Stuff имеют аннотации JAXB.

person David Rabinowitz    schedule 02.11.2009
comment
Я достаточно уверен, что эта публикация неверна, по крайней мере, в CXF. Обратите внимание: поскольку мы говорим о параметрах, мы говорим о JAX-WS, а не о JAXB. JAX-WS будет обрабатывать массивы, и нет абсолютно никаких требований к использованию каких-либо аннотаций JAXB для POJO в качестве параметров или возвращаемых значений. - person bmargulies; 12.11.2009