MuleSoft — использование flowVars внутри конечной точки

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

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

<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://

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


person user1820620    schedule 30.08.2013    source источник


Ответы (2)


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

person Seba    schedule 30.08.2013
comment
Также обратите внимание, что #[flowVars.URL_ADDRESS] или даже #[URL_ADDRESS] тоже подойдут и будут более лаконичными. - person David Dossot; 31.08.2013
comment
Спасибо, Себа и Дэвид, это прекрасно работает, если URL_ADDRESS определен в подпотоке. Если я определяю переменную URL_ADDRESS в другом потоке того же приложения в качестве переменной сеанса, основной поток не распознает ее. - person user1820620; 02.09.2013
comment
И как вы получаете доступ к переменной при сохранении в сеансе? - person Seba; 02.09.2013
comment
Я проверяю это просто по #[sessionVars.URL_ADDRESS] - person user1820620; 17.09.2013

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

person Ramu Chowdam    schedule 03.12.2015