У меня есть несколько потоков, которые полагаются на переменные сеанса, которые генерируются в одном потоке, а затем передаются другому. Можно ли полагаться на переменные сеанса, используемые двумя асинхронными потоками? Я предполагаю, что я не полностью понимаю сферу действия «sessionVars» в приложении mule или в данном сообщении мула.Безопасно ли полагаться на переменные сеанса для хранения информации, которая будет использоваться между несколькими асинхронными потоками?
ответ
Сеанс мула не имеет ничего общего с сеансом Java EE, который разделяется по потокам. Сеанс мула является частью MuleMessage, и как они работают, объясняется here, поэтому, если вы хотите поделиться чем-то несколькими потоками, обрабатывая одно и то же сообщение, что и есть путь.
Если вместо этого вы ищете в способ сохранения значения из потока обработки сообщения и выбрать это значение из потока обработки сообщения B вы должны рассмотреть хранить это значение в objectstore
Я уверен, что переменные сеанса возвращаются в конечные точки http, которые являются запросом-ответом. Это может вызвать конфиденциальные данные. Я пытаюсь найти первоначальное упоминание и официальную стратегию смягчения последствий, но еще не нашел его снова.
Но простое решение, чтобы удалить их в точке возврата потока
Edit: Нашел, что я искал ...
` < 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 и будут усложнять свойства ввода/вывода, поэтому сеанс действительно лучший выбор здесь. –