Mule: установка переменной сеанса внутри компонента вызова

Лучший способ установить переменную сеанса внутри компонента вызова, используемого для вызова конкретного метода Spring bean.

<invoke object-ref="serviceBean" method="asyncFlowMethod" doc:name="Invoke3" methodArguments="#[sessionVars['event']]"/>


public void asyncFlowMethod(String event) {

        Inside this method i need to set a session variable 


    }

person NAZAR REHMAN    schedule 15.01.2015    source источник


Ответы (1)


Я бы рекомендовал вам изменить метод получения MuleMessage и использовать его для доступа к переменным сеанса:

public void asyncFlowMethod(MuleMessage message) {

        String event = message.getProperty("event", PropertyScope.SESSION);

        message.setProperty("event", event + "test", PropertyScope.SESSION);


    }

и вызвать его с помощью

<invoke object-ref="serviceBean" method="asyncFlowMethod" doc:name="Invoke3" methodArguments="#[message]"/>
person Nuno    schedule 15.01.2015
comment
#[сообщение] является контекстом сообщения, а не MuleMessage - person NAZAR REHMAN; 15.01.2015
comment
Исходящие свойства MessageContext, даже если они установлены в методе, не видны за пределами этого метода. - person NAZAR REHMAN; 16.01.2015
comment
@NAZARREHMAN Попробуйте решение, предложенное @DavidDossot в этом вопросе для доступа к MuleEvent RequestContext.getEvent() - person Nuno; 16.01.2015