Почему я не могу получить значение записи локального реестра из WSO2 ESB API? - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь использовать WSO2 Local Registry в проекте 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 в качестве значения.

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

0 голосов
/ 05 июля 2018

В 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...