Всем привет!
Скажем, у меня есть веб-сервис:
@WebService
public interface StubWebService {
/**
* Just a stub method.
*/
public void stubMethod();
}
И я хочу создать его клиент с помощью инструмента wsdl2java.После генерации я получаю заглушку в виде документа / буквально завернутого веб-сервиса.Давайте посмотрим на это:
@WebService(targetNamespace = "target", name =
"StubWebService")
@XmlSeeAlso({ObjectFactory.class})
public interface StubWebService {
@RequestWrapper(
localName = "stubMethod",
targetNamespace = "target",
className = "packageName.StubMethod")
@WebMethod
@ResponseWrapper(
localName = "stubMethodResponse",
targetNamespace = "target",
className = "packageName.StubMethodResponse")
public void stubMethod();
}
и, конечно:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "stubMethod")
public class StubMethod {
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "stubMethodResponse")
public class StubMethodResponse {
}
Как можно видеть, есть дубликаты фрагментов, например:
@RequestWrapper(localName = "stubMethod"
и
@XmlType(name = "stubMethod")
Из-за этого возникает исключение "IllegalAnnotationException: два класса имеют одинаковый тип XML ...".Решение состоит в том, чтобы изменить @XmlType (name = на что-то отличное от "stubMethod", скажем, "stubMethod1".
Мой вопрос заключается в том, почему инструмент wsdl2java генерирует неисправный код и что является внутреннимСхема, @XmlType создает привязку к (где представлен тег "stubMethod1")?
Заранее спасибо!