2015-01-04 5 views
0

Spring bean을 사용하여 세션 변수 Text 코드로 뮬 메시지를 보완하려고합니다. 흐름 코드Mule : Spring bean 메소드를 사용하여 헤더 추가하기

<spring:beans> 
    <spring:bean id="enrichService" class="com.enrich.EnricherService"/> 
</spring:beans> 
<flow name="HeaderEnricherFlow1" doc:name="HeaderEnricherFlow1"> 
    <file:inbound-endpoint path="C:/txtFile" responseTimeout="1000" doc:name="Inbound File"/> 
    <byte-array-to-string-transformer doc:name="Byte Array to String"/> 
    <enricher target="#[sessionVars:TextCode]" doc:name="Header Enricher"> 

    <core:component> 
    <spring-object bean="enrichService"/> 
    </core:component> 
    </enricher> 
    <logger level="INFO" doc:name="Logger" message="#[sessionVars:TextCode]"/> 
</flow> 

EnrichService 방법

공공 문자열 enrichmentResource (@Payload 문자열 페이로드) {

System.out.println("Payload:::::::::" + payload); 

    String result="Text3"; 

    return result; 
} 

제가 풍부하게 서비스 클래스에서 세션 변수 TextCode 설정하는 데 필요한 값을 반환하고 EnrichService 메소드 enrichmentResource,하지만 설정되지 않았습니다.

답변

0

"# [sessionVars [ 'TextCode']]"표현을 사용하여이 작업을 수행했습니다. 이전에는 잘못된 구문 "# [sessionVars : TextCode]"의 표현식을 참조했습니다.

1

당신이 언급 한 형식이 정확하며 enritcher를 사용하는 것이 가장 눈에 띄는 방법이며 이것을 쓰는 것입니다. 그러나 이미 루트 네임 스페이스로 ns 코어를 사용하고 있다는 점을 감안할 때 구성 요소 요소의 핵심 접두어를 제거하는 것이 좋습니다.

또한 특별한 엔트리 포인트 리졸버가 없다는 것을 감안할 때 단일 메소드 또는 매우 간단한 클래스가 있다고 가정하면 성능을 위해 빠른 엔트리 포인트 리졸버를 설정하거나 invoke 메시지 프로세서를 사용합니다. 또한 성능이 매우 중요한 경우 메시지를 가져 와서 Enritcher를 사용하는 대신 속성을 설정할 수 있습니다.

+0

예 성능이 매우 중요합니다. Spring Bean에서 메시지를 수신하려면 어떻게해야합니까? 호출 가능을 구현하고 MuleEventContext에서 메시지를 가져 오거나 다른 방법이 필요합니까? 명확히하십시오. –

+0

어노테이션 http://www.mulesoft.org/documentation/display/current/Mule+Annotation에서 표현식을 사용할 수 있지만, 성능을 위해서는 Callable을 사용하고 싶지 않습니다. 구성 요소 코드를 변경합니다. –