2014-10-30 5 views
1

2 노드를 포함하는 플로우를 생성 중입니다. 1) WMB 노드 - MQ 에서 메시지를 선택합니다. 2) Java 노드 - 메시지 변환 및 처리 .Mule에서 플로우 시작시 특성 파일을 읽는 방법

비즈니스 논리를 구현하기위한 몇 가지 값이 포함 된 속성 파일을 하나 만들었습니다. 흐름을 실행하는 동안 Java 클래스는 해당 속성 파일을 읽습니다.

현재 구현에 따라 MQ에 새 메시지가 들어올 때마다 java 클래스가 속성 파일을로드합니다. 따라서 이런 식으로 'n'메시지가 대기열에 있으면 플로우는 특성 파일 'n'을 읽습니다.

하지만 우리는 플로우가 실행될 때마다 플로우를 전개/재시작 할 때 속성 파일을 한 번만 읽어야합니다.

참고로 내 프로젝트에서 봄 프레임 워크를 사용하지 않고 있습니다.

답변

0

요 당신의 뮬 흐름에 다음과 같이 선언 할 수 있습니다 그리고 당신은 그것을 위해 스프링 빈을 필요로하지 않습니다 -

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

그것은 한 번만 서버가 시작된 후 읽을 수 있습니다은/

UPDATE를 다시 시작합니다

- :

은 당신이 그것에 키와 값을 다음 프로퍼티 yourpropertFileName.properties라는 이름으로 파일 및 사용자가 정의한 있다고 가정 6,

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

지금 당신은 다음과 같이 뮬 흐름에서 사용할 수 있습니다 : -

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

을 당신은 내가 특성 파일에서 키와 값을 읽고 뮬 구성 파일에 로거에서 그것을 사용하고 볼 수 있듯이. . 당신은 속성에서 키를 사용하여 같은 방법은

업데이트 원하는 뮬 구성 요소 파일 : - 여기 은 .. 당신은 당신의 요구 사항에 따라 수정할 수있는 파일 속성에서 값을 읽어 샘플 자바 클래스입니다 : -

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

Mule은 내부적으로 스프링 프레임 워크를 사용합니다. Spring은 Mule 구성 파일을로드하는 데 사용되므로 컨텍스트 네임 스페이스를 직접 추가 할 수 있습니다. –

+0

@Anirban : 답장을 보내 주셔서 감사합니다. Java 코드에서이 등록 정보 파일의 키를 사용하려면 어떻게해야합니까? 도와주세요. – SonuR

+0

내 대답을 업데이트했습니다. 유용하다고 판단되면 Pls는 대답을 수락합니다. –