2014-01-14 1 views
1

Ниже приведен пример wsimport сгенерированный метод заглушки службы:тип возврата в 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 как возвращаемым типом?

Спасибо заранее,

Валерий

ответ

2

Найдено, как это настраивается:

Функция называется «WrapperStyle» должна быть отключена, чтобы генерироваться метод типа возврата xxxResponse. Это выполнимо, предоставляя -b параметра для wsimport как

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>