2009-07-20 47 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嗎? – 2009-07-20 20:36:14

回答

26

DefaultWsdl11Definition通過檢查模式中的類型嘗試自動生成WSDL。如果你的模式不適合它的預期模式,它將不會很好地完成它。

the documentation

其中 構建從XSD模式一個WSDL的DefaultWsdl11Definition。這個 定義迭代在架構中找到的所有元素 ,並且 爲所有元素創建消息。 接下來,它爲 創建所有以定義的 請求或響應後綴結尾的消息的WSDL操作。默認請求後綴 是請求; 默認響應後綴是響應, ,但可以分別通過設置 請求屬性和響應屬性 屬性來更改這些屬性。它也 建立一個基於操作的portType,binding和 服務。

舉例來說,如果我們Orders.xsd模式 定義GetOrdersRequest和 GetOrdersResponse元素時, XsdBasedSoap11Wsdl4jDefinitionBuilder 將創建一個GetOrdersRequest和 GetOrdersResponse消息和 GetOrders操作,這是擺在 訂單端口類型。

+0

謝謝!現在它工作:)。 – Etam 2009-07-20 21:05:32