2009-07-20 17 views
9

Spring-WSはバインディング・タグで操作を行わずにWSDLを生成します...なぜか分かりますか?Spring-WSは操作なしでWSDLを生成します

私の春-WS-service.xmlにはあります:

<import resource="classpath*:application-context.xml" /> 

    <!-- Register PayloadRootAnnotationMethodEndpointMapping --> 
    <bean class="org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping" /> 

    <!-- Register Endpoint --> 
    <bean id="tasktablerServiceEndpoint" class="tasktabler.mpk.service.TasktablerServiceEndpoint" /> 

    <!-- Configure XML Marshaller --> 
    <bean class="org.springframework.ws.server.endpoint.adapter.GenericMarshallingMethodEndpointAdapter"> 
     <constructor-arg ref="marshaller" /> 
    </bean> 

    <bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> 
     <property name="classesToBeBound"> 
      <list> 
       <value>tasktabler.mpk.databinding.OptimizeRequest</value> 
      </list> 
     </property> 
    </bean> 

    <!-- Add automatic WSDL generation support --> 
    <bean id="tasktabler" class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition"> 
     <property name="schema" ref="schema" /> 
     <property name="portTypeName" value="tasktabler" /> 
     <property name="locationUri" value="http://localhost:8080/tasktabler" /> 
     <property name="targetNamespace" value="http://tasktabler" /> 
    </bean> 

    <bean id="schema" class="org.springframework.xml.xsd.SimpleXsdSchema"> 
     <property name="xsd" value="/WEB-INF/schema.xsd" /> 
    </bean> 

とWSDLのWSDL結合部分があります。事前に

<wsdl:binding name="tasktablerSoap11" type="tns:tasktabler"> 
     <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> 
    </wsdl:binding> 

おかげで、 エタムは。

+0

生成したWSDLを追加してください。 –

答えて

26

DefaultWsdl11Definitionは、スキーマの型を調べてWSDLを自動生成しようとします。あなたのスキーマが期待されたパターンに合わない場合、それはうまくいくことはありません。 the documentationから

は、XSDスキーマからWSDLを構築しますDefaultWsdl11Definition。この 定義は、スキーマ内のすべての要素 の要素を繰り返し、 はすべての要素のメッセージを作成します。 次に、定義された 要求または応答サフィックスで終了するすべてのメッセージの のWSDL操作を作成します。 デフォルトの要求サフィックスはRequestです。 のデフォルトの応答サフィックスは、 のレスポンスですが、これらはそれぞれ requestSuffixプロパティとresponseSuffix プロパティを設定することで変更できます。また、 は、操作に基づいてportType、binding、および サービスを構築します。例えば

、当社Orders.xsdスキーマ はGetOrdersRequestと GetOrdersResponse要素、 XsdBasedSoap11Wsdl4jDefinitionBuilder を定義している場合 受注ポートタイプに置かれGetOrdersRequestと GetOrdersResponseメッセージ、および GetOrders操作を、作成します。 。

+0

ありがとうございました!今それは動作します:)。 – Etam

+0

'requestSuffix'と' responseSuffix'に感謝します。 –

関連する問題