前面的系列介紹了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
這個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
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
具體實現代碼以下異常