2014-02-05 2 views
1

이 코드를 누군가가 (자바 컴포넌트처럼)인바운드 속성 노새가 생성

message.setProperty("myProperty", PropertyScope.INBOUND"); 

를 메시지 프로세서에서 인바운드 메시지 속성을 만들 수 있지만,이

<set-property value="100" propertyName="myProperty" /> 
문서 당

을하지 않는 이유는 무엇, 메시지 소스 만 인바운드 속성을 만들 수 있어야합니다. 그런 다음 Java 구성 요소가 인바운드 메시지 속성을 설정할 수있는 이유는 무엇입니까?

+0

누군가 이유 때문에이 부분을 표시하지 않습니다. '' – mdev

+0

질문이 고정되어 있습니다. 다음을보십시오. http://stackoverflow.com/help/formatting –

+0

David, 포맷 태그가 있습니다. – mdev

답변

1

당신이 맞습니다 - 그것이 인바운드 속성의 문서화 된 동작을 위반합니다.

Exception stack is: 
1. The inbound message property "foo" cannot be added, updated or removed 
    because inbound message properties are immutable (java.lang.UnsupportedOperationException) 
    org.mule.el.context.MessagePropertyMapContext:47 (null) 

그러나 setProperty에 대한 자바 독은 말한다 :

Set a property on the message. End-users should prefer more scope-specific methods for readability. This one is more intended for programmatic scope manipulation and Mule internal use.

런타임시

<expression-component> 
    message.inboundProperties['foo'] = 'bar' 
</exporession-component> 

다음과 같은 오류가 발생합니다 :만큼 추가 증거는 식 구성 요소를 사용하여 인바운드 속성을 설정하려고하면

setProperty는 내부 뮬 사용을위한 것이므로 setInvocationProperty, setOutboundProperty 또는 setSessionProperty를 사용해야합니다. 내가 전에 setProperty를 사용했기 때문에 흥미로운 부분입니다.

+0

아직 확실하지 않습니다. 예를 들어 어떻게 설명 할 수 있습니까? [http://www.mulesoft.org/documentation/display/current/Mule+Message+Structure] 속성에는 인바운드와 아웃 바운드라는 두 가지 주요 범위가 있습니다. 인바운드 속성은 변경 불가능하며 메시지 원본에서 자동으로 생성되며 사용자가 설정하거나 조작 할 수 없습니다. 여기에는 메시지 수명주기의 후반부에 데이터 형식이나 기타 처리상의 오류가 발생하지 않도록 메시지 원본과 관련된 메타 데이터가 포함되어 있습니다. 메시지는 흐름이 지속되는 동안 만 인바운드 속성을 유지합니다. – mdev

+0

실제로 내가 제공 한 예제를 시도하지 않았습니다. 그것을 시도한 후에, 표현을 통해 인바운드 속성을 설정하려고하면 Mule이 실제로 오류를 던진다는 것을 알 수 있습니다. 이 새로운 정보를 바탕으로 답변을 업데이트했습니다. – neildo