2014-10-30 3 views
1

Я создаю поток, который содержит в основном 2 узла: 1) WMB-узел - он выбирает сообщение из MQ 2) Java Node - преобразует и обрабатывает сообщение ,Как прочитать файл свойства во время начала потока в Mule

Я создал один файл свойств, который содержит некоторые значения для реализации бизнес-логики. Во время выполнения потока мои классы java читают этот файл свойств.

В соответствии с текущей реализацией классы java загружают файл свойств всякий раз, когда в MQ приходит новое сообщение. Таким образом, если в очередь попадают сообщения «n», файл свойств чтения потока «n» раз.

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

Просто FYI, я не использую весенний каркас в своем проекте.

ответ

0

Yo может объявить следующее в вашем Mule потока и не требует пружинных бобов для этого: -

<context:property-placeholder location="classpath:yourpropertFileName.properties"/> 

Он будет читаться только один раз после запуска сервера/перезагружается

UPDATE

Предположим, у вас есть файл свойств с именем, как yourpropertFileName.properties и вы определили следующие ключи и значения в нем: -

message1=This is message1 value 
message2=This is message2 value 

Теперь вы можете использовать его в Mule потоке, как следующее: -

<logger message="${message1}" level="INFO" /> 
<logger message="${message2}" level="INFO" /> 

Как вы можете видеть, что я прочитал ключи и значения из файла свойств и использовать его в регистраторе в Mule Config файл. . Таким же образом вы можете использовать ключи из файла свойств в любом Mule компоненты вы хотите

ОБНОВЛЕНЫ: - Вот пример класс Java, который считывает значение из файла свойств .. вы можете изменить в соответствии с вашими требованиями: -

import java.io.IOException; 
import java.io.InputStream; 
import java.util.Properties; 

import org.mule.api.MuleMessage; 
import org.mule.api.transformer.TransformerException; 
import org.mule.transformer.AbstractMessageTransformer; 

    public class SampleJavaClass extends AbstractMessageTransformer { 

     Properties prop = new Properties(); //Creating property file object read File attachment path from property file 
     InputStream input = null; // To read property file path 

     @Override 
     public Object transformMessage(MuleMessage message, String outputEncoding) 
       throws TransformerException { 

      try { 
       input = getClass().getResourceAsStream("yourpropertFileName.properties"); // Property file path in classpath 
       prop.load(input); // get and load the property file 
       String msg1=prop.getProperty("message1"); 
       String msg2=prop.getProperty("message2"); 
       System.out.println("Key1 from Prop file "+msg1); 
       System.out.println("Key2 from Prop file "+msg2); 
      } catch (IOException e) 
      { 

       e.printStackTrace(); 
      } 

       return message; 
      } 
     } 
+0

Чтобы уточнить, Мул использует внутреннюю структуру Spring Framework. Spring используется для загрузки файла конфигурации Mule, поэтому вы можете напрямую добавить пространство имен контекста. –

+0

@Anirban: Спасибо за ваш ответ. Как я могу использовать ключ этого файла свойств в своем Java-коде. Пожалуйста помоги. – SonuR

+0

Я обновил свой ответ .. Pls принимает ответ, если вы сочтете полезным –

Смежные вопросы