2009-06-10 66 views
2

我試圖創建一個基於定義一個請求和一個響應的WSDL的WS。傳入的請求應根據SOAP消息中定義的SOAPAction映射到端點。爲了實現這一點,我試圖在我的servlet.xml配置文件中使用SoapActionEndpointMapping並定義映射,如Spring documentation中所述。在Spring-ws中使用SoapActionEndpointMapping

<bean id="endpointMapping" class="org.springframework.ws.soap.server.endpoint.mapping.SoapActionEndpointMapping"> 
    <property name="mappings"> 
     <props> 
      <prop key="http://myCompany/MyService/MyRequest/mySoapActionOne">myFirstEndpoint</prop> 
      <prop key="http://myCompany/MyService/MyRequest/mySoapActionTwo">mySecondEndpoint</prop> 
     </props> 
    </property> 

我的終點延伸AbstractMarshallingPayloadEndpoint,應該能夠處理的請求。

的問題是,當我嘗試發送一個請求(用了SoapUI)我得到以下錯誤日誌中:

WARN [EndpointNotFound] No endpoint mapping found for [SaajSoapMessage {http://schemas.mycompany/MyService}MyRequest] 

我已經使用了PayloadRootQNameEndpointMapping大獲成功較早,但不能這樣工作。

任何幫助表示讚賞。

問候。

+0

任何運氣得到這個工作? – skaffman 2009-06-20 08:37:47

回答

0

您是否還定義了一個處理程序適配器bean?您需要一個才能使用MarshallingPayloadEndpoint,以便Spring知道如何執行編組。適配器被稱爲像MarshallingEndpointHandlerAdapter或類似的東西。

+0

我還沒有定義任何MarshallingPayloadEndpoint。我所做的是設置AbstractMarshallingPayloadEndpoint的編組/解組器屬性。這與PayloadRootQNameEndpointMapping一起工作,但我會查看MarshallingEndpointHandlerAdapter。 謝謝 – maskefjes 2009-06-10 07:52:18

0

在您的SOAP客戶端(SOAPUI)中,您需要將SOAPAction標頭添加到您的請求中,以便爲Spring提供在其映射中使用的SOAP操作。

E.g. SOAPAction = http:// myCompany/MyService/MyRequest/mySoapActionOne

它應該沒有什麼區別你使用的是什麼類型的Endpoint,因爲目前你正在收到404響應 - 你的請求沒有找到它的方式到任何端點。