所以我有一个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个输入参数导致它无法正常部署?
答案 0 :(得分:1)
我找到了问题的根源。使用文档编码存在问题以及我如何定义复杂类型。
我将它切换为使用RPC并修改了我如何定义修复问题的SetPWFlagRequest。