wsimport не генерирует классы ответов - PullRequest
0 голосов
/ 20 мая 2019

У меня есть wsdl, который выглядит так:

<?xml version='1.0' encoding='UTF-8'?>
<s0:definitions name="ws" targetNamespace="http://dbwork3/Ws.wsdl" xmlns="" xmlns:s0="http://schemas.xmlsoap.org/wsdl/" xmlns:s1="http://www.w3.org/2001/XMLSchema" xmlns:s2="http://dbwork3/Ws.wsdl" xmlns:s3="http://schemas.xmlsoap.org/wsdl/soap/">
  <s0:types/>
  <s0:message name="Ws_checkentitlement">
    <s0:part name="jmbg" type="s1:string"/>
    <s0:part name="documentId" type="s1:string"/>
    <s0:part name="requestId" type="s1:string"/>
    <s0:part name="firstName" type="s1:string"/>
    <s0:part name="lastName" type="s1:string"/>
    <s0:part name="dateOfBirth" type="s1:dateTime"/>
    <s0:part name="code" type="s1:string"/>
    <s0:part name="message" type="s1:string"/>
    <s0:part name="data" type="s1:string"/>
  </s0:message>
  <s0:message name="Ws_checkentitlementResponse">
    <s0:part name="firstName" type="s1:string"/>
    <s0:part name="lastName" type="s1:string"/>
    <s0:part name="dateOfBirth" type="s1:dateTime"/>
    <s0:part name="code" type="s1:string"/>
    <s0:part name="message" type="s1:string"/>
    <s0:part name="data" type="s1:string"/>
  </s0:message>
  <s0:message name="Ws_submitrequest">
    <s0:part name="requestId" type="s1:string"/>
    <s0:part name="code" type="s1:string"/>
    <s0:part name="message" type="s1:string"/>
    <s0:part name="data" type="s1:string"/>
  </s0:message>
  <s0:message name="Ws_submitrequestResponse">
    <s0:part name="code" type="s1:string"/>
    <s0:part name="message" type="s1:string"/>
    <s0:part name="data" type="s1:string"/>
  </s0:message>
  <s0:portType name="ws">
    <s0:operation name="checkentitlement" parameterOrder="jmbg documentId requestId firstName lastName dateOfBirth code message data">
      <s0:input message="s2:Ws_checkentitlement"/>
      <s0:output message="s2:Ws_checkentitlementResponse"/>
    </s0:operation>
    <s0:operation name="submitrequest" parameterOrder="requestId code message data">
      <s0:input message="s2:Ws_submitrequest"/>
      <s0:output message="s2:Ws_submitrequestResponse"/>
    </s0:operation>
  </s0:portType>
  <s0:binding name="ws" type="s2:ws">
    <s3:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
    <s0:operation name="checkentitlement">
      <s3:operation soapAction="http://dbwork3/Ws.wsdl/checkentitlement"/>
      <s0:input>
        <s3:body namespace="http://dbwork3/Ws.wsdl" parts="jmbg documentId requestId firstName lastName dateOfBirth code message data" use="literal"/>
      </s0:input>
      <s0:output>
        <s3:body namespace="http://dbwork3/Ws.wsdl" parts="firstName lastName dateOfBirth code message data" use="literal"/>
      </s0:output>
    </s0:operation>
    <s0:operation name="submitrequest">
      <s3:operation soapAction="http://dbwork3/Ws.wsdl/submitrequest"/>
      <s0:input>
        <s3:body namespace="http://dbwork3/Ws.wsdl" parts="requestId code message data" use="literal"/>
      </s0:input>
      <s0:output>
        <s3:body namespace="http://dbwork3/Ws.wsdl" parts="code message data" use="literal"/>
      </s0:output>
    </s0:operation>
  </s0:binding>
  <s0:service name="ws">
    <s0:port binding="s2:ws" name="wsPort">
      <s3:address location="http://x.x.x.x:y/xxxxyyyy/wsPort"/>fo
    </s0:port>
  </s0:service>
</s0:definitions>

Я использую wsimport для генерации клиентских классов.Однако классы ответа не генерируются.Методы возвращают void, где они должны возвращать объект ответа.

Вот пример сгенерированного метода submitRequest:

@WebMethod(action = "http://dbwork3/Ws.wsdl/submitrequest")
    public void submitrequest(
        @WebParam(name = "requestId", partName = "requestId")
        String requestId,
        @WebParam(name = "code", mode = WebParam.Mode.INOUT, partName = "code")
        Holder<String> code,
        @WebParam(name = "message", mode = WebParam.Mode.INOUT, partName = "message")
        Holder<String> message,
        @WebParam(name = "data", mode = WebParam.Mode.INOUT, partName = "data")
        Holder<String> data);

}

Когда я запускаю структуру WSDL, она выглядит нормально.И эти методы должны возвращать ответ, как указано.Я даже пытался создать объекты ответа вручную, но получил ошибку («Невозможно привести объект для отправки ответа»).

...