首页 > 解决方案 > Spring 集成 - XpathPayloadEndpointMapping - 无法理解且没有此类文档

问题描述

<bean class="org.springframework.ws.server.endpoint.mapping.XPathPayloadEndpointMapping">
    <property name="expression"><value>local-name(/*)</value></property>
    <property name="mappings">
        <props>
                <prop key="sampleKey">mySampleServiceGateway</prop>

. . .

<xs:element name="sampleKey">
        <xs:complexType>
            <xs:complexContent>

. .

我从您的一个集成项目中获得了上述代码。但我无法理解标签可以包含哪些可能的值以及<value>local-name(/*)</value>.

虽然通过查看代码,我可以确定关键是 XSD 元素名称,但我无法从中获得更多信息。

是否有与 spring 集成的不同映射相关的任何文档,如何使用它们?

标签: spring-integrationspring-ws

解决方案


您的配置看起来不错,尽管您确实需要弄清楚应该使用什么 XPath 表达式。它应用于 SOAP 请求消息体:

protected String getLookupKeyForMessage(MessageContext messageContext) throws Exception {
    Element payloadElement = getMessagePayloadElement(messageContext.getRequest());
    return expression.evaluateAsString(payloadElement);
}

所以,真的可以考虑对你身体的一个根元素进行断言。

根据提供的配置,您尝试解析为请求根元素的本地名称。听起来您现在期望sampleKey作为根标签名称。

XPathPayloadEndpointMapping有关更多信息,请参阅 JavaDocs 。


推荐阅读