下面是 wsimport 生成的服务存根方法的示例:
@WebMethod(operationName = "GetSynonym", action = "GetSynonymRequest")
@WebResult(name = "Synonyms", targetNamespace = "service.bnsf.com/contact/ContactMessages")
@RequestWrapper(localName = "GetSynonym", targetNamespace = "service.bnsf.com/contact/ContactMessages", className = "com.bnsf.service.contact.contactmessages.GetSynonymRequest")
@ResponseWrapper(localName = "GetSynonymResponse", targetNamespace = "service.bnsf.com/contact/ContactMessages", className = "com.bnsf.service.contact.contactmessages.GetSynonymResponse")
public Synonyms getSynonym(
@WebParam(name = "RequestContext", targetNamespace = "service.bnsf.com/contact/ContactMessages") RequestContext requestContext,
@WebParam(name = "SynonymId", targetNamespace = "service.bnsf.com/contact/ContactMessages") EntityId synonymId)
throws BusinessFaultMessage, ServiceFaultMessage;
请注意,返回类型是同义词类。
以下是相关的 wsdl 部件:
<xs:element name="GetSynonymResponse" type="GetSynonymResponse"/>
<xs:complexType name="GetSynonymResponse">
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="1" name="Synonyms" type="account:Synonyms"/>
</xs:sequence>
</xs:complexType>
...
<wsdl:message name="GetSynonymResponse">
<wsdl:part element="msg:GetSynonymResponse" name="GetSynonymResponse"/>
</wsdl:message>
...
<wsdl:operation name="GetSynonym">
<soap:operation soapAction="GetSynonymRequest" style="document"/>
<wsdl:input name="GetSynonymRequestRequest">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="GetSynonymRequestResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="BusinessFault">
<soap:fault name="BusinessFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="ServiceFault">
<soap:fault name="ServiceFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
默认情况下,wsimport 生成了使用同义词类作为返回类型的服务方法,而不是 GetSynonymResponse 类。
我的问题是这是否是可定制的 - 是否有可能使 wsimport 生成具有不同签名的服务方法,特别是将 GetSynonymResponse 类作为返回类型?
提前感谢,
瓦列里
了解了它的可配置性:
应禁用名为"WrapperStyle"的功能,以使生成的方法返回 xxxResponse 类型。这可以通过向 wsimport 提供 -b 参数来实现,例如
wsimport" -b binding.xml ContactService.wsdl
具有绑定.xml内容为
<jaxws:bindings wsdlLocation="ContactService.wsdl"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb">
<!-- Turn off wrapper style Java method signature generation -->
<jaxws:enableWrapperStyle>false</jaxws:enableWrapperStyle>
</jaxws:bindings>