Почему я не могу получить значение локальной записи реестра из WSO2 ESB API?

Я пытаюсь использовать локальный реестр WSO2 в проекте ESB.

Поэтому в моем проекте EI я добавил этот файл env.xml в папку local- records (а затем я добавил его в Maven для включения в проект):

<?xml version="1.0" encoding="UTF-8"?>
<localEntry key="env" xmlns="http://ws.apache.org/ns/synapse">TEST</localEntry>

Таким образом, в теории я определяю locaEntry, имеющий key="env" и текстовый строковый TEST в качестве значения.

Теперь я пытаюсь получить его в API ESB REST, следуя официальной документации ( https://docs.wso2.com/display/ESB481/Local+Registry+Entries). Я пытаюсь получить его с помощью get-property( функция prop-name) (где имя-проп-имя должно быть определенным ключом: env в моем случае).

В мой код API у меня есть это:

<inSequence>
    <log level="full"/>
    <property expression="get-property('uri.var.countryId')" name="countryId" scope="default" type="STRING"/>
    <property expression="get-property('uri.var.lang_id')" name="lang_id" scope="default" type="STRING"/>

    <log level="custom">
        <property expression="$ctx:countryId" name="Country ID"/>
        <property expression="$ctx:lang_id" name="Lang ID"/>
        <property expression="$ctx:env" name="env"/>
    </log>
    .........................................................................
    .........................................................................
    .........................................................................

Как вы можете видеть, я пытаюсь получить и записать содержимое моей локальной записи env, но это то, что я получаю в журнале WSO2:

TID: [-1234] [] [2018-07-05 12:36:44,055]  INFO {org.apache.synapse.mediators.builtin.LogMediator} -  
Country ID = 1, 
Lang ID = 1, 
env = <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body/></soapenv:Envelope> {org.apache.synapse.mediators.builtin.LogMediator}

Зачем? Что случилось? Что мне не хватает? Как я могу исправить эту проблему?

1 ответ

Решение

В Local Entries есть два типа, которые вы можете упомянуть

1. Inline Text

2. Inline XML.

Как я вижу, вы используете встроенный XML, так как он заканчивается на.xml(При создании XML не нужно указывать расширение .xml как вы уже будете выбирать inline XML), если это так, используйте свойство ниже

 <property
        expression="get-property('env')"
        name="Indexing" scope="default" type="OM" xmlns:ns="http://org.apache.synapse/xsd"/>.

Так что ваша локальная запись должна выглядеть

<ROOT_ELEMENT>
Test
</ROOT_ELEMENT>

После этого в вашей последовательности используйте лог-медиатор для свойства $ctx:indexing

Другие вопросы по тегам