2009-06-10 108 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响应 - 你的请求没有找到它的方式到任何端点。