Не удалось сгенерировать заглушки / скелеты Java из WSDL - PullRequest
3 голосов
/ 27 июля 2011

Я написал WSDL для генерации заглушек и скелета, но мои скелеты не генерируются в затмении.Я использую Helios версию Eclipse.
Может ли кто-нибудь сказать, в чем проблема с WSDL?

Я хочу использовать Axis 2. Я попытался сгенерировать скелет, используя wsdl2java, но он вызывает проблемы компиляции всгенерированные классы.Я не могу прикрепить файл здесь, поэтому я вставляю его сюда.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<wsdl:definitions xmlns:impl="http://DefaultNamespace"
      xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:apachesoap="http://xml.apache.org/xml-soap"
      xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
      name="Test" targetNamespace="http://DefaultNamespace"> 
      <wsdl:types>
        <xsd:schema elementFormDefault="qualified"
          targetNamespace="http://DefaultNamespace" xmlns="http://www.w3.org/2001/XMLSchema">
          <import namespace="http://xml.apache.org/xml-soap" />
          <xsd:element name="serviceMethod">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="vo" type="impl:MyVo" />
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
          <xsd:complexType name="MyVo">
            <xsd:sequence>
              <xsd:element name="name" nillable="false" type="xsd:string" />
              <xsd:element name="params" nillable="true"
                type="apachesoap:Map" />
            </xsd:sequence>
          </xsd:complexType>
          <xsd:element name="serviceMethodResponse">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="serviceMethodReturn" type="impl:MyVo" />
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:schema>
        <xsd:schema elementFormDefault="qualified"
          targetNamespace="http://xml.apache.org/xml-soap" xmlns="http://www.w3.org/2001/XMLSchema">
          <import namespace="http://DefaultNamespace" />
          <xsd:complexType name="mapItem">
            <xsd:sequence>
              <xsd:element name="key" nillable="true" type="xsd:anyType" />
              <xsd:element name="value" nillable="true" type="xsd:anyType" />
            </xsd:sequence>
          </xsd:complexType>
          <xsd:complexType name="Map">
            <xsd:sequence>
              <xsd:element maxOccurs="unbounded" minOccurs="0"
                name="item" type="apachesoap:mapItem" />
            </xsd:sequence>
          </xsd:complexType>
        </xsd:schema>
      </wsdl:types>
      <wsdl:message name="serviceMethodRequest">
        <wsdl:part element="impl:serviceMethod" name="parameters" />
      </wsdl:message>
      <wsdl:message name="serviceMethodResponse">
        <wsdl:part element="impl:serviceMethodResponse" name="parameters" />
      </wsdl:message>
      <wsdl:portType name="Test">
        <wsdl:operation name="serviceMethod">
          <wsdl:input message="impl:serviceMethodRequest" name="serviceMethodRequest" />
          <wsdl:output message="impl:serviceMethodResponse" name="serviceMethodResponse" />
        </wsdl:operation>
      </wsdl:portType>
      <wsdl:binding name="TestSOAP" type="impl:Test">
        <soap:binding style="document"
          transport="http://schemas.xmlsoap.org/soap/http" />
        <wsdl:operation name="serviceMethod">
          <soap:operation soapAction="http://DefaultNamespace/serviceMethod" />
          <wsdl:input>
            <soap:body use="literal" />
          </wsdl:input>
          <wsdl:output>
            <soap:body use="literal" />
          </wsdl:output>
        </wsdl:operation>
      </wsdl:binding>
      <wsdl:service name="Test">
        <wsdl:port binding="impl:TestSOAP" name="MyWebService">
          <soap:address location="http://localhost:8080/Temp/services/MyService" />
        </wsdl:port>
      </wsdl:service>
    </wsdl:definitions>

Ответы [ 3 ]

1 голос
/ 12 ноября 2012

У меня была такая же проблема.Я полагаю, что структура папок maven вызывает это.Я создал новый проект без Maven, и он работал.Добавил мавен позже.Также проверьте исходные папки в «Java Build Path».Если он отсутствует, вам нужно будет добавить его.

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

Это проблема с вашей установкой.

Загрузите и проверьте плагины axis2 и axis2 eclipse, убедитесь, что вы установили пути к классам AXIS2_HOME.

Иногда у меня тоже перестает работать, и тогда мне нужно идти и переустанавливать все.Не беспокойтесь о создании отчетов об ошибках в Eclipse или Apache, они всегда закрываются как «WORKSFORME».

Шаги для создания кода из вашего wsdl:

  1. Создайте динамический веб-проект.
  2. Создайте файл wsdl.
  3. Щелкните правой кнопкой мыши файл wsdl, выберите Веб-службы -> Создать скелет Java Bean
  4. Нажмите Готово

Библиотеки, фасеты и сгенерированный код Axis2 будут добавлены в ваш проект автоматически, и проблем с компиляцией не будет.

0 голосов
/ 25 июля 2013

Я столкнулся с той же проблемой, но теперь она решена. Проблема в том, что если у вас есть метод, который «ВЫБИРАЕТ НЕКОТОРЫЙ ВИД ИСКЛЮЧЕНИЯ», то это вызовет проблему. Поэтому вместо того, чтобы выдавать ошибку, попробуйте использовать оператор блока try-catch.

...