Весна интеграции - XpathPayloadEndpointMapping - не в состоянии понять, и нет такой документации - PullRequest
0 голосов
/ 26 апреля 2018
<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, но больше ничего я бы не смог получить из этого.

Есть ли какая-либо документация, относящаяся к различным картографическим картам для интеграции пружин, как их использовать?

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Спасибо Билану за то, что он осветил меня.

Проведя какое-то дополнительное исследование, я понял, что я искал ответ: «Каковы возможные значения, которые может использовать выражение?» и поиск по всей весенней документации. - Уфф! Я был неправ.

XPath - это не пружинный элемент, это совершенно независимый элемент, и пружина просто использует это. Таким образом, чтобы узнать, какие возможные значения может содержать элемент, любой может обратиться по ссылке ниже из W3C.

https://www.w3.org/TR/1999/REC-xpath-19991116/#function-local-name

Итак. В моем случае текущее значение local-name(/*), которое является предопределенным методом XPath.

0 голосов
/ 26 апреля 2018

Ваша конфигурация выглядит хорошо, хотя вам действительно нужно выяснить, какое выражение XPath вам следует использовать. Он применяется к телу сообщения запроса SOAP:

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

Итак, действительно стоит подумать об утверждении против корневого элемента вашего тела.

В соответствии с предоставленной конфигурацией вы пытаетесь разрешить локальное имя корневого элемента запроса. Похоже, вы ожидаете sampleKey в качестве имени корневого тега.

См. JavaDocs XPathPayloadEndpointMapping для получения дополнительной информации.

...