2014-11-21 68 views
2

我剛剛開始使用mule,不知道如何將我的請求頭的一部分作爲參數/參數傳遞給Java組件。如何從Mule流中將參數傳遞給Java組件?

我的Java組件是如下

public String processHeader(String in) 
{ 
    //process header 
    System.out.print(" Header" + in); 
} 

的Ive能夠從流

  <component> 
       <method-entry-point-resolver> 
       <include-entry-point method="processHeader" /> 
       </method-entry-point-resolver> 
       <singleton-object class="my.test.mule.Processor" /> 
      </component> 

訪問上述使用http://localhost:8080/test訪問processHeader以下面的方式。打印Header test

我可以在使用轉儲頭的內容如下

<logger level="INFO" doc:name="Logger" message="#[headers:INBOUND:*]"/>

但我似乎無法弄清楚如何通過message作爲參數傳遞給processHeader也可以找到任何相關的例子。任何幫助,將不勝感激。

順便說一句,我使用Mule 3.5如果這件事。

+0

您正在使用哪個版本的Mule? – 2014-11-21 04:51:35

回答

2

實現您的Java組件的Callable接口。當默認方法被覆蓋時,你將得到eventContext作爲參數,在其中你可以找到mule消息,這反過來又讓你訪問標題和有效載荷。樣品是在這裏:

import org.mule.api.MuleEventContext; 
import org.mule.api.lifecycle.Callable; 
import org.mule.api.transport.PropertyScope; 
public class Test implements Callable { 

@Override 
public Object onCall(MuleEventContext eventContext) throws Exception { 
    eventContext.getMessage().getProperty("header1", PropertyScope.INBOUND); 
    return null; 
} 
} 
+0

看起來不錯。但是,我將如何在流程中引用'onCall'? – userNotFound 2014-11-21 17:04:01

+0

這個onCall被自動調用。不需要顯式調用。 – tortoise 2014-11-22 18:14:12

+0

http://stackoverflow.com/questions/22841424/accessing-mulemessage-and-a-flow-variable-from-java-component?rq=1這個答案看起來更好 – tortoise 2014-11-22 18:42:58

1

你有多種選擇:

@Mule Annotation

一個參數注入的註釋,可以在組件條目 點和變壓器的方法來使用,這個註解可以用於在消息有效載荷上執行 Mule表達式,並將結果傳遞給方法中的 。

另外:

@InboundHeaders Annotation

此註釋控制如何在當前消息的入站報頭 通入的方法。註釋支持,地圖,列表,單個 標題,通配符和可選條目。它可用於組件 入口點和@Transformer方法。

結合可能使用:

@Payload Annotation

甲參數注入註釋可以在組件條目被用於 點和使用所述@Transformer 註釋中定義變壓器的方法,該註釋控制通過執行消息有效載荷的自動轉換以匹配註釋的參數類型,當前消息有效載荷 如何傳遞到方法中。例如,如果 期望XML文檔,則可將其注入到 組件入口點,並自動轉換爲 org.wc3.dom.Document。

您也可以按照不同的響應中所述實現Callable,但這樣做會比此解決方案表達得多。

相關問題