Как получить доступ к свойству в Mule Java Transformer

У меня есть файл свойств, который используется в нескольких приложениях. Чтобы получить доступ к этим свойствам в одном приложении, я использую этот тег:

<context:property-placeholder location="classpath:br/com/empresa/configuracao/mule-apps.properties"/>

В некоторых компонентах Mule, таких как соединения атрибутов базы данных, я использую следующее выражение для доступа к свойствам, p.e .: ${db.user}. Оно работает!

Но как я могу получить доступ к свойствам в Java Transformer?

Я попробовал выполнить следующие инструкции, но вернул null:

System.getProperty("db.user");
message.getInboundProperty("db.user");
message.getOutboundProperty("db.user");
message.getInvocationProperty("db.user");

Есть ли способ получить доступ к свойствам в Mule Java Transformer?


person Muka    schedule 15.02.2016    source источник


Ответы (2)


На этот вопрос был дан ответ для компонентов здесь: Как получить свойство из тега заполнителя свойств контекста внутри пользовательского компонента Java Точно такая же логика относится к трансформаторам.

Использовать внедрение свойств:

<custom-transformer class="org.myCompany.CustomTransformer">
    <property name="dbUser" value="${db.user}" />
</custom-transformer>

Не забудьте добавить setDbUser в свой пользовательский компонент!

person David Dossot    schedule 15.02.2016
comment
Я хочу использовать это свойство для создания настраиваемого хоста (URL-адрес wsdl) в классе службы (веб-служба Java). Он инициализируется статически. Я сделал то, что вы предлагали, но возвращает значение null. Это работает в статическом контексте? - person Muka; 23.02.2016
comment
В XML: <custom-transformer class="br.com.emp.ws.MyServices" name="Java" doc:name="Java"> <spring:property name="wshost" value="154.154.154.80"/> </custom-transformer> - person Muka; 23.02.2016
comment
В Java (штука): public class MyServices extends Service { static String wshost; static { System.out.println(wshost); // print NULL } public static void setWshost(String s) { wshost = s; } } - person Muka; 23.02.2016
comment
Существуют разные варианты добавления статических полей: stackoverflow.com/a/11324464/387927 - person David Dossot; 24.02.2016
comment
Понимать. Но я думаю, что моя проблема в том, что статический класс загружается во время выполнения ESB перед введением статических полей, потому что, когда я запускаю приложение, загружается первый статический класс и после PropertySourcesPlaceholderConfigurer. Мне нужно сначала загрузить эти свойства. - person Muka; 24.02.2016
comment
Или можно просто статику не использовать? Mule / Spring предоставляет вам правильный жизненный цикл приложения и управление зависимостями. Статика портит оба аспекта. - person David Dossot; 24.02.2016
comment
Я не уверен, что смогу оставить статику! Я использую классы веб-сервисов, созданные компонентом CXF. Но я нашел альтернативу, программно, хотя и не совсем желательную !: stackoverflow.com/questions/34923956/. Спасибо за внимание! - person Muka; 25.02.2016

Вы можете использовать старый способ получения свойства:

@Value("${db.user")
private String dbUser;
person Alex Fernandez    schedule 17.02.2016