Почему я не могу получить значение локальной записи реестра из 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