ОСь: OperationDesc не был синхронизирован с методом - PullRequest
2 голосов
/ 07 января 2011

Итак, у меня есть веб-сервис, который получает флаг из таблицы в sql, который работает. Я сейчас пытаюсь добавить функциональность, чтобы установить тот же флаг. Если у меня есть только один вход (то есть значение имени пользователя ИЛИ), он работает отлично. Однако, если я пытаюсь использовать 2 элемента в качестве входных данных, я получаю следующую ошибку, когда моя AXIS пытается развернуть:

org.jboss.axis.InternalException: java.lang.Exception: OperationDesc для setPWFlag не был синхронизирован с методом PWEndPoint.

Вот урезанная версия моего WSDL:

<complexType name="getPWFlagRequest">
    <sequence>
     <element name="alias" type="xsd:string" />
    </sequence>
   </complexType>

   <complexType name="getPWFlagResponse">
    <sequence>
     <element name="result" type="xsd:string" />
    </sequence>
   </complexType>

   <complexType name="setPWFlagRequest">
    <sequence>
     <element name="id" type="xsd:string" />
     <!-- Having this line gives the OperationDesc Synch Error -->
     <element name="flag" type="xsd:string" />
    </sequence>
   </complexType>

   <complexType name="setPWFlagResponse"/>

   <element name="getPWFlagRequest" type="types:getPWFlagRequest" />
   <element name="getPWFlagResponse" type="types:getPWFlagResponse" />

   <element name="setPWFlagRequest" type="types:setPWFlagRequest" />
   <element name="setPWFlagResponse" type="types:setPWFlagResponse" />
 </schema>
 </types>

 <message name="PWEndPoint_getPWFlagRequest" >
  <part name="parameter" element="types:getPWFlagRequest"/>
 </message>
 <message name="PWEndPoint_getPWFlagResponse">
   <part name="result" element="types:getPWFlagResponse"/>
 </message>

 <message name="PWEndPoint_setPWFlagRequest" >
  <part name="parameters" element="types:setPWFlagRequest"/>
 </message>
 <message name="PWEndPoint_setPWFlagResponse"/>

 <portType name="PWEndPoint">
    <operation name="getPWFlag" >
      <input message="service:PWEndPoint_getPWFlagRequest"/>
      <output message="service:PWEndPoint_getPWFlagResponse"/>
    </operation>
    <operation name="setPWFlag" >
      <input message="service:PWEndPoint_setPWFlagRequest"/>
      <output message="service:PWEndPoint_setPWFlagResponse"/>
    </operation>
 </portType>


 <binding name="PWResetBinding" type="service:PWEndPoint">
  <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
  <operation name="getPWFlag" >
   <soap:operation soapAction="getPWFlag" />
   <input>
    <soap:body use="literal" />
   </input>
   <output>
    <soap:body use="literal" />
   </output>
  </operation>
  <operation name="setPWFlag" >
   <soap:operation soapAction="setPWFlag" />
   <input>
    <soap:body />
   </input>
   <output>
    <soap:body use="literal" />
   </output>
  </operation>
 </binding>


 <service name="PWService">
  <port name="PWEndPointPort" binding="service:PWResetBinding">
   <soap:address location="@url@" />
  </port>
 </service>

Что меня действительно сбивает с толку, так это то, что он говорит, что у него есть проблема с синхронизацией с методом в PWEndPoint, но PWEndPoint генерируется Java2WSDL. Вот созданный интерфейс:

public interface PWEndPoint extends java.rmi.Remote {
    public java.lang.String getPWFlag(java.lang.String alias) throws 
         java.rmi.RemoteException;
    public void setPWFlag(java.lang.String id, java.lang.String flag) throws 
    java.rmi.RemoteException;
}

Почему два входных параметра приводят к невозможности его правильного развертывания?

1 Ответ

1 голос
/ 03 февраля 2011

Я нашел корень проблемы.Возникла проблема с использованием кодировки документов и способа определения сложных типов.

Я переключил его на использование RPC и изменил способ определения моего SetPWFlagRequest, который устранил проблему.

...