Mule ESB - 如何评估自定义java转换器中的表达式

时间:2014-04-01 08:33:08

标签: mule

在Mule ESB自定义java转换器中,如何从java代码中评估表达式?

MuleContext有一个表达式管理器,它有一个很好用的evaluate方法。但是,不推荐使用接受MuleMessage的签名,并且不推荐使用的版本需要MuleEvent。 MuleEvent不能从变换器中获得,只能是MuleMessage。

基本上我想要使用的是:

muleContext.getExpressionManager().evaluate(someValue, message);

访问MuleEvent的另一种方法是使用静态RequestContext.getEvent()。但是,这也被弃用了。我已成功创建一个带有ThreadLocal<MuleEvent>的静态变量,通过MessageProcessor在流程的早期注入MuleEvent,但它感觉完全错误,并且可能不是最安全的方法。

我错过了什么吗?还有另外一种方法吗?关于迁移路径的java文档中已弃用的注释没有太多指导。

1 个答案:

答案 0 :(得分:3)

如果您想避免弃用的方法,可以使用

evaluate(String expression, String evaluator, MuleMessage message, boolean failIfNull)

如果您的表达式只是MEL,请使用null作为evaluator,否则它是您的表达式的前缀(json等)。