Комплексный пакет jaxws

Скажем, у меня есть служба WCF, используемая клиентом jaxws, созданным с помощью мыла, с помощью wsimport. Сервис SEI выглядит так

@WebMethod(operationName = "DoSomething", action = "http://mydomain.com/PersonService/Dosomething")
@WebResult(name = "DoSomethingResult", targetNamespace = "http://mydomain.com/")
@RequestWrapper(localName = "DoSomething", targetNamespace = "http://mydomain.com/", className = "webservice.jaxws.DoSomething")
@ResponseWrapper(localName = "DoSomethingResponse", targetNamespace = "http://mydomain.com/", className = "webservice.jaxws.DoSomething")
public Person doSomething(
    @WebParam(name = "person", targetNamespace = "http://mydomain.com/")
    Person person);

который принимает комплексный тип Person и возвращает тот же тип Person и генерирует DoSomething выглядит

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
  "person"
})
@XmlRootElement(name = "DoSomething")
public class DoSomething {

@XmlElement(nillable = true)
protected Person person;
public Person getPerson() {
    return person;
}
public void setPerson(Person value) {
    this.person = value;
}

все работает нормально, если Person - это тот же пакет, что и DoSomething, и как только я переместил Person в другое место, служба WCF не сможет получить что-либо из объекта Person (поля имеют нулевое или нулевое значение), возвращаемое значение из WCF не может быть корректно десерилизовано JAXWS, хотя не было никаких исключений.

Я заметил, что если они находятся в одном пакете, то будет вызываться setPerson, но не если они находятся в разных пакетах.

Мне интересно, возможно ли поместить комплексный тип Person в другой пакет, как DoSomething.

1 ответ

Оказывается, нужен волшебный файл package-info.java в пакете Person

Другие вопросы по тегам