【问题标题】:Usage of SoapActionEndpointMapping in Spring-wsSpring-ws中SoapActionEndpointMapping的使用
【发布时间】:2010-11-01 17:30:44
【问题描述】:

我正在尝试基于定义一个请求和一个响应的 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 取得了巨大成功,但无法正常工作。

感谢任何帮助。

问候。

【问题讨论】:

  • 运气好可以让它工作吗?

标签: web-services spring soap spring-ws


【解决方案1】:

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

例如SOAPAction=http://myCompany/MyService/MyRequest/mySoapActionOne

您使用什么类型的端点应该没有任何区别,因为目前,您会收到 404 响应 - 您的请求未找到到达任何端点的方式。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我没有定义任何 MarshallingPayloadEndpoint。我所做的是设置 AbstractMarshallingPayloadEndpoint 的编组器/解组器属性。这适用于 PayloadRootQNameEndpointMapping,但我将研究 MarshallingEndpointHandlerAdapter。谢谢
    猜你喜欢
    • 1970-01-01
    • 2012-01-14
    • 2020-04-05
    • 2012-09-20
    • 1970-01-01
    • 2020-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多