WSO2 ESB: использование определения внешнего параметра для прокси?

Мы используем несколько прокси, которые прослушивают разные места. Но во время разработки у нас не тот же URI, что и в производственной среде. Можно ли определить внешний URI (transport.vfs.File.URI)? (Может быть, местный вход или другое свойство?)

Следующая строка должна иметь возможность загрузить внешнее определение фактического URI:

<parameter name="transport.vfs.FileURI">get-property('myURI')</parameter>

Полный пример прокси (не работает):

<proxy xmlns="http://ws.apache.org/ns/synapse" name="getRN100xml"
statistics="disable" trace="disable" transports="vfs">
<target>
    <inSequence>
   <send>...</send>
    </inSequence>
</target>
<parameter name="transport.vfs.ActionAfterProcess">MOVE</parameter>
<parameter name="transport.PollInterval">5</parameter>
<parameter name="transport.vfs.MoveAfterProcess">C:/WSO2/In/saved</parameter>
<parameter name="transport.vfs.FileURI">get-property('myURI')</parameter>
<parameter name="transport.vfs.FileNamePattern">.*.xml</parameter>
<parameter name="transport.vfs.ContentType">application/xml</parameter>
<parameter name="transport.vfs.MoveTimestampFormat">yyMMddHHmmss</parameter>


person FiveO    schedule 21.06.2012    source источник


Ответы (2)


Вы можете проверить это сообщение WSO2 ESB - динамическое значение для параметры прокси (транспорт) для примера того, как динамически устанавливать значения в последовательности прокси.

person nidkil    schedule 22.06.2012

Простой способ сделать это — создать шаблон последовательности и установить параметры в этом шаблоне. Вы читаете этот шаблон как первое действие в вашем inSequence. Ваше определение прокси выглядит так:

<proxy xmlns="http://ws.apache.org/ns/synapse" name="getRN100xml"
statistics="disable" trace="disable" transports="vfs">
<target>
 <inSequence>
   <call-template target="transport_vfs_parameter_settings"/>
 <send>...</send>
/<inSequence>
</target>

Определение шаблона выглядит как sg. подобно:

<template xmlns="http://ws.apache.org/ns/synapse" name="transport_vfs_parameter_settings">
   <sequence>
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.FileNamePattern" expression="test.xml"></property>
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.PollInterval" expression="15" scope="transport"></property>
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.ActionAfterProcess" expression="MOVE" scope="transport"></property>
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.FileURI" expression="//localhost/D:/Test/in" scope="transport"></property>
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.MoveAfterProcess" expression="//localhost/D:/Test/processed" scope="transport"></property>
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.MoveAfterFailure" expression="//localhost/D:/Test/failure" scope="transport"></property>
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.ContentType" expression="text/xml" scope="transport"></property>
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.ActionAfterFailure" expression="MOVE" scope="transport"></property>
   </sequence>
</template>

Таким образом, перенос определения прокси-сервера в другую среду означает использование другого шаблона. Естественно, в inSequence можно задавать только те параметры, значения которых можно определить в начале inSequence. Например, если вы хотите, чтобы имя replyFilename содержало идентификатор сообщения ответа, задайте его в файле outSequence.

person GinaF    schedule 25.09.2015