AXIS:OperationDesc未与方法同步

时间:2011-01-07 20:37:00

标签: wsdl axis

所以我有一个web服务,从sql中的表中获取一个标志,这是有效的。我现在正在尝试添加设置相同标志的功能。如果我只有一个输入(即用户名OR标志值),它可以完美地工作。但是,如果我尝试将2个元素作为输入,则在我的AXIS尝试部署时会出现以下错误:

org.jboss.axis.InternalException:java.lang.Exception:setPWFlag的OperationDesc未与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;
}

为什么有2个输入参数导致它无法正常部署?

1 个答案:

答案 0 :(得分:1)

我找到了问题的根源。使用文档编码存在问题以及我如何定义复杂类型。

我将它切换为使用RPC并修改了我如何定义修复问题的SetPWFlagRequest。