wsdl2java и проблема стиля документа / литерала - PullRequest
3 голосов
/ 25 февраля 2012

Всем привет!

Скажем, у меня есть веб-сервис:

@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")?

Заранее спасибо!

...