AFAIK, 속성 파일은 서버가 처음 실행될 때 읽혀집니다. 여러 속성이 있지만 하나의 키 (고유 한) 만 참조됩니다.
그러나이 요구 사항을 수용하기 위해 Java 코드를 사용해야한다고 생각합니다. 이 코드는 요청 (id)을 기반으로 특정 속성 파일을 읽는 작업을 담당합니다. 그런 다음 속성을 읽고 더 사용에 대한 변수로 설정 : http://localhost:8081/prop?id=1 또는 http://localhost:8081/prop?id=2는 다른 결과를 얻을 :
private Properties prop = new Properties();
private InputStream input = null;
public Object transformMessage(MuleMessage message, String outputEncoding) throws TransformerException {
String id = ((ParameterMap)message.getInboundProperty("http.query.params")).get("id");
input = getClass().getResourceAsStream("../property" + id + ".properties");
prop.load(input);
message.setInvocationProperty("communityToSync", prop.getProperty("dgc.metamodel.CommunityToSync"));
message.setInvocationProperty("domainToSync", prop.getProperty("dgc.metamodel.DomainToSync"));
을 나는
<flow name="propertyFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/prop" allowedMethods="GET" doc:name="HTTP"/>
<custom-transformer class="example.ReadProperty" doc:name="Java"/>
<logger message="CommunityToSync = #[flowVars.communityToSync], DomainToSync = #[flowVars.domainToSync]" level="INFO" doc:name="Logger"/>
</flow>
브라우저를 통해 실행하는 간단한 흐름을 테스트했다.
뮬 서버를 시작하는 동안 예외가 발생하고 'name'속성 생성 '오류로 생성 오류가 발생하여 배포가 실패했습니다 :'bean 초기화가 실패했습니다. 중첩 예외 'java.util.ArrayList'유형의 속성 값을 'messageProcessors'속성의 필수 유형 'java.util.List'로 변환하지 못했습니다. 속성 'messageProcessors [0]'에 대해 [test_project.ReadProperty] 유형의 값을 필수 유형 [org.mule.api.processor.MessageProcessor]으로 변환 할 수 없습니다 : 일치하는 편집기 또는 변환 전략이 없습니다. '이 메시지에 대한 반환 값으로 메시지를 전달 중입니다. transformMessage 메소드. – Arkade
AbstractMessageTransformer 클래스를 확장하여이 문제를 해결했습니다. – Arkade