在Spring-ws中使用SoapActionEndpointMapping

时间:2009-06-10 07:36:15

标签: web-services spring soap spring-ws

我正在尝试基于定义一个Request和一个Response的WSDL创建WS。传入请求应映射到端点,具体取决于SOAP消息中定义的SOAPAction。为了实现这一点,我试图在我的servlet.xml配置文件中使用SoapActionEndpointMapping并定义映射,如Spring documentation中所述。

 <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取得了巨大的成功,但是无法使用它。

感谢任何帮助。

问候。

2 个答案:

答案 0 :(得分:0)

您是否还定义了处理程序适配器bean?您需要一个才能使用MarshallingPayloadEndpoint,以便spring知道如何执行编组。适配器的名称类似于MarshallingEndpointHandlerAdapter或类似名称。

答案 1 :(得分:0)

在SOAP客户端(SOAPUI)中,您需要将SOAPAction标头添加到您的请求中,以便为spring提供要在其映射中使用的SOAP操作。

E.g。的SOAPAction = HTTP:// myCompany的/为MyService / MyRequest / mySoapActionOne

您正在使用哪种类型的端点应该没有任何区别,因为目前您正在收到404响应 - 您的请求未找到通往任何端点的路径。