Массивы в качестве параметров в веб-сервисах Axis2 POJO? - PullRequest
2 голосов
/ 05 июля 2011

Я новичок в Axis2 / Webservice и пытаюсь превратить простой POJO в веб-сервис (код ниже). Класс PieceInfo помечен @XmlRootElement, и у меня есть класс ObjectFactory, который возвращает PieceInfo в методе (код ниже). Методы, использующие PieceInfo работают, методы, использующие List<PieceInfo> или PieceInfo[] в качестве параметров, генерируют исключения JAXB, такие как java.util.List is not known to this context. Я думал, список или массив должен просто отлично работать. Что я делаю не так?

@WebService (name="KMPService",targetNamespace="http://www.ict.ie.tss/")
@MTOM
public interface KMPServiceInterface {

@WebMethod
void updateRootInfo(String username, String password, PieceInfo info);

@WebMethod
PieceInfo getRootInfo(String username, String password);

@WebMethod
void put(String username, String password, List<PieceInfo> infoList);

@WebMethod
PieceInfo[] get(String username, String password,
    PieceInfo[] infoList);

@WebMethod
void deleteEntries(String username, String password,
    PieceInfo[] infoList);

}

ObjectFacotry:

@XmlRegistry
public class ObjectFactory {

public PieceInfo createPieceInfo(){
    return new PieceInfo();
}

 }

Ответы [ 2 ]

1 голос
/ 25 июля 2011

Кажется, ответ: Не используйте Axis2 .Использование cxf теперь и все работает со списками и массивами из коробки.

0 голосов
/ 05 июля 2011

Используйте массивы вместо java.util.List.

Помните, что веб-службы должны взаимодействовать со всем, например, с клиентами веб-служб .Net, которые не имеют представления о том, как создать объект java.util.List, но должны иметь возможность выяснить, как создать массив. объектов PieceInfo.

Надеюсь, это устранит ваши проблемы "не известны этому контексту". Также убедитесь, что PieceInfo имеет конструктор с нулевым аргументом, чтобы инфраструктура Axis могла его создать.

...