12

Spring-WS は、バインディング タグでの操作なしで WSDL を生成します...理由を知っていますか?

私のspring-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>

前もってありがとう、イータム。

4

1 に答える 1

29

DefaultWsdl11Definition は、スキーマ内の型を調べて、WSDL の自動生成を試みます。スキーマが予想されるパターンに適合しない場合、スキーマはうまく機能しません。

ドキュメントから:

XSD スキーマから WSDL を構築する DefaultWsdl11Definition。この定義は、スキーマで見つかったすべての要素要素を反復し、すべての要素のメッセージを作成します。次に、定義された要求または応答サフィックスで終わるすべてのメッセージの WSDL 操作を作成します。デフォルトのリクエスト サフィックスは Request です。デフォルトの応答サフィックスは Response ですが、これらは requestSuffix プロパティと responseSuffix プロパティをそれぞれ設定することで変更できます。また、操作に基づいて portType、バインディング、およびサービスを構築します。

たとえば、Orders.xsd スキーマが GetOrdersRequest 要素と GetOrdersResponse 要素を定義する場合、XsdBasedSoap11Wsdl4jDefinitionBuilder は GetOrdersRequest と GetOrdersResponse メッセージ、および Orders ポート タイプに配置される GetOrders 操作を作成します。

于 2009-07-20T20:37:33.880 に答える