하나의 흐름에서 생성되어 다른 흐름으로 전달되는 세션 변수에 의존하는 두 가지 흐름이 있습니다. 두 개의 비동기식 흐름에서 사용되는 세션 변수에 의존하는 것이 안전합니까? 나는 뮬 애플리케이션이나 주어진 뮬 메시지에서 'sessionVars'의 범위를 완전히 이해하지 못했을 것으로 생각한다.여러 비동기 흐름간에 공유 할 정보를 저장하기 위해 세션 변수에 의존하는 것이 안전합니까?
답변
뮬 세션은 스레드간에 공유되는 Java EE 세션과 아무 관련이 없습니다. 노새 세션은 MuleMessage의 일부이며 어떻게 작동하는지는 here으로 설명됩니다. 따라서 이동하려는 동일한 메시지를 처리하는 여러 플로우에서 무언가를 공유하고 싶다면.
당신은 메시지 을 처리하는 흐름 값을 저장하고 objectstore세션 변수가 요청 - 응답 인 HTTP 끝점으로 반환된다는 것은 확실합니다. 이로 인해 중요한 데이터가 노출 될 수 있습니다. 나는 원래의 언급과 공식 완화 전략을 찾으려하지만 아직 그것을 다시 찾지 못했습니다. 찾을 I가 ...
` < HTTP 찾던 일 : 커넥터 이름 = "NoSessionConnector"
그러나 쉬운 솔루션은
편집 흐름의 반환 시점에서 그들을 제거하는 것입니다 >
< 서비스 우선 sessionHandler = "org.mule.session.NullSessionHandler"/>
</HTTP : 커넥터> 'HTTP 응답 헤더'
http://www.mulesoft.org/documentation/display/current/HTTP+Transport+Reference
또는, 당신은 또한 당신이 다른 사람을 호출하려면 어떻게 정의 SessionHandler
안녕하세요, 론도, 지금 당장이 문제에 착수하고 있습니다. 지금 당신이 참조하는 것을 정확하게 찾고 있습니다. HTTP 호출에서 헤더로 보내지는 세션 변수에 대한 '완화 전략'을 찾고 있습니다. 이런 이유로 stackoverflow에 두 번째 질문을 게시하려고했습니다. – GarySharpe
@GarySharpe 나는 정보를 가지고 나의 반응을 편집했다. – Rondo
를 만들 수 있습니다에서 여기
'
흐른다? 'flow-ref' 또는 VM 대기열을 사용합니까? –
VM 대기열. 차이점이 뭐야? – GarySharpe
VM 대기열을 사용하면 flowVars를 사용할 수 없으므로 in/out 속성이 복잡해지기 때문에 세션이 실제로 최선의 방법입니다. –