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

丶灬走出姿态 提交于 2019-12-03 10:24:43

   前面的系列介绍了Mule ESB提供和用户自定义的Entry Point Resolver,如果我们在实际使用中需要用到多个Entry Point Resolver进行Entry Point 匹配时,我们需要使用Entry Point Resolver Set。

   Mule ESB提供的Entry Point Resolver Set包含两种,一种是系统默认的Entry Point Resolver Set:

Legacy Entry Point Resolver Set,它包含了实现标准逻辑的Entry Point Resolver,这些Resolver包括

  •  Annotation Entry Point Resolver 

      这个Entry Point Resolver前面没有提到,它主要是用于解析带有@Service标签的Component类的方法,匹配的方法所有的参数都需要有Mule Expression Language注解,例如以下的方法     

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。

      如果Component中符合注解要求的方法多于一个,需要在Mule inbound property中设置"method" property,指定匹配的方法名。

  • 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标签    

<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。

具体实现代码如下

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!