Mule ESB中entry-point-resolver的使用(9) Entry Point Resolver Set和 Legacy Entry Point Resolver Set

   前面的系列介紹了Mule ESB提供和用戶自定義的Entry Point Resolver,若是咱們在實際使用中須要用到多個Entry Point Resolver進行Entry Point 匹配時,咱們須要使用Entry Point Resolver Set。java

   Mule ESB提供的Entry Point Resolver Set包含兩種,一種是系統默認的Entry Point Resolver Set:.net

Legacy Entry Point Resolver Set,它包含了實現標準邏輯的Entry Point Resolver,這些Resolver包括code

  •  Annotation Entry Point Resolver 

      這個Entry Point Resolver前面沒有提到,它主要是用於解析帶有@Service標籤的Component類的方法,匹配的方法全部的參數都須要有Mule Expression Language註解,例如如下的方法     xml

public Object method1(@XPath ("/foo/bar")String bar, 
  @Payload Document doc, @InboundHeaders("name")String name)
{
  ........
}

      這個方法的全部參數就包含了MEL註解@XPath, @Payload, @InboundHeader。第一個註解表示從Document類型的Payload中根據XPath 「/foo/bar"獲取的節點文本。第二個註解表示將Mule Message的Payload賦給參數doc,第三個註解表示從Mule inbound property中讀取name屬性,賦給參數name。get

      若是Component中符合註解要求的方法多於一個,須要在Mule inbound property中設置"method" property,指定匹配的方法名。io

  • Property Entry Point Resolver 
  • Callable Entry Point Resolver
  • Reflection Entry Point Resolver

     Legacy Entry Point Resolver Set默認包含這些Entry Point Resolver,若是須要添加其餘的entry point resolver,能夠使用legacy-entry-point-resolver-set標籤    class

<legacy-entry-point-resolver-set>
   <xxx-entry-point-resolver />
</legacy-entry-point-resolver-set>

   另外一種Entry Point Resolver Set是Entry Point Resolver Set,是爲用戶自定義指定Resolver指定的Set,用戶能夠像如下方式使用 方法

<legacy-entry-point-resolver-set>
   <xxx-entry-point-resolver />
   <xxxx-entry-point-resolver />
</legacy-entry-point-resolver-set>

   不管是Legacy Entry Point Resolver Set,仍是Entry Point Resolver Set,匹配Entry Point時逐一使用Set中定義的Resolver進行匹配,若是匹配失敗,記入異常信息,繼續使用下一個Resolver進行匹配,直到找到第一個匹配的Entry Point執行,或者全部的Entry Point Resolver都匹配完畢,沒有找到匹配的Entry Point。im

具體實現代碼以下異常

相關文章
相關標籤/搜索