2012-07-26 54 views
1

此問題與Mule ESB 3.2有關。MULE 3.2 - 如何從java組件訪問流會話屬性值

如果我從JMS讀值,轉換成JSON和值存儲在我的演講是這樣的:

<message-properties-transformer scope="session" doc:name="save values to session">    
     <add-message-property key="id" value="#[json-node://id]"/> 
     <add-message-property key="name" value="#[json-node://name]"/> 
</message-properties-transformer> 

<component class="org.mule.example.echo.Echo"/> 

如何從一個Java組件訪問這些屬性值?

回答

1

首先,你的班級必須實現org.mule.api.lifecycle.Callable接口。然後你就可以得到onCall方法中的屬性值,這樣

@Override 
public Object onCall(MuleEventContext eventContext) throws Exception { 
    String id = eventContext.getMessage().getProperty("id", PropertyScope.SESSION); 
    String name = eventContext.getMessage().getProperty("name", PropertyScope.SESSION); 
    //Do the rest of your stuff 
} 
+0

完美!謝謝@丹尼爾 – Kawika 2012-07-26 21:54:50

+0

我發現了另一種方法來做到這一點與註釋,檢查[創建服務對象和變形金剛使用註釋](http://www.mulesoft.org/documentation/display/MULE3USER/Creating+Service+Objects+and +變形金剛+使用+註釋#註釋,AnnotationsReference) – Daniel 2012-07-27 13:27:26

1

如果屬性與OutboundScope添加那麼簡單

public void process(@Payload String payload, @OutboundHeaders Map headers){ 
    String id = headers.get("name") 
} 

將返回流動性能