2013-08-30 3 views
0

Я начинаю использовать Mule и задаю некоторые тривиальные вопросы. Вот один из них. Предположим, что вы храните адрес URL-адреса для последующего вызова процесса в файле свойств. Затем вы хотите использовать конечную точку http, указав этот URL. Он отлично работает, вы просто указываете адрес: $ {URL_ADDRESS} и все.MuleSoft - использование flowVars внутри конечной точки

Теперь, если ваш url рассчитан и установлен на flowVar, почему следующий код не работает?

<http:outbound-endpoint exchange-pattern="request-response" method="GET" address="#[flowVars['URL_ADDRESS']]" doc:name="HTTP"/> 

Он бросает это исключение:

java.lang.IllegalArgumentException: Address '#[flowVars['URL_ADDRESS']]' for protocol 'http' should start with http:// 

Почему проверяется во время компиляции? Как сделать, чтобы установить его во время выполнения?

ответ

4

Протокол не может быть динамическим. Вы должны изменить свою исходящую конечную точку на
<http:outbound-endpoint exchange-pattern="request-response" method="GET" address="http://#[flowVars['URL_ADDRESS']]" doc:name="HTTP"/>

+0

Также обратите внимание, что '# [flowVars.URL_ADDRESS]' или даже '# [URL_ADDRESS]' будет работать и быть более кратким. –

+0

Спасибо Seba и David, он работает как шарм, если URL_ADDRESS определен в подпотоке. Если я определяю переменную URL_ADDRESS в другом потоке того же приложения, что и переменная сеанса, основной поток не распознает ее. – user1820620

+0

И как вы получаете доступ к переменной при сохранении в сеансе? – Seba

0

Вы должны использовать переменные потока в нижнем формате. Либо # [FileName], либо # [flowVars.FileName]