对于生产使用的Web服务 - 客户端机制,我们正在实现与已经使用的非常类似的新功能。 新方法使用与wsdl中的先前功能相同的描述。 使用Apache Axis(1.)在Eclipse内部生成客户端。
WSDL
<wsdl:operation name="Work">
<soap:operation soapAction="WORK" style="document"/>
<wsdl:input>
<soap:header message="llws:Header2" part="Header" use="literal"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="Work">
<wsdl:input message="test:WorkRequestObject"/>
<wsdl:output message="test:WorkResponseObject"/>
</wsdl:operation>
令我困惑的是生成方法的不同语法。第一种方法是使用签名生成的:
public ResponseObject doSomething(RequestObject)
而第二种方法是使用签名生成的
public void doSomeOtheWork (RequestObject, javax.xml.rpc.holders.BigIntegerHolder, javax.xml.rpc.holders.StringHolder)
为什么这样做?为什么两种方法都不是使用相同的语法生成的?难道第一种方法已经存在且生成器保持不变,而第二种方法生成另一种版本/ lib则因此我得到另一种签名?