【问题标题】:Return type in wsimport-generated service stub methodswsimport 生成的服务存根方法中的返回类型
【发布时间】:2014-01-14 15:00:33
【问题描述】:

这里是 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 生成的服务方法使用 Synonyms 类作为返回类型,而不是 GetSynonymResponse 类。

我的问题是这是否是可定制的 - 是否有可能使 wsimport 生成具有不同签名的服务方法,特别是使用 GetSynonymResponse 类作为返回类型?

提前致谢,

瓦莱里

【问题讨论】:

    标签: wsdl jax-ws wsimport


    【解决方案1】:

    发现这是如何配置的:

    应该禁用名为“WrapperStyle”的功能,以使生成的方法返回 xxxResponse 类型。 这可以通过向 wsimport 提供 -b 参数来实现,例如

    wsimport" -b binding.xml ContactService.wsdl

    binding.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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多