【问题标题】:Mule ESB - How to evaluate expression in custom java transformerMule ESB - 如何评估自定义 Java 转换器中的表达式
【发布时间】:2014-04-01 08:33:07
【问题描述】:

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

MuleContext 有一个表达式管理器和一个运行良好的评估方法。但是,接受 MuleMessage 的签名已弃用,非弃用版本需要 MuleEvent。转换器没有 MuleEvent,只有 MuleMessage。

基本上我想用的是这个:

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

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

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

【问题讨论】:

    标签: mule


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢。这可能会奏效。使用 MuleMessage 的已弃用方法似乎在将表达式语言与表达式分离后调用了此特定方法。基于 MuleEvent 的方法似乎只是从事件中提取消息并在后台重用已弃用的基于 MuleMessage 的方法。我仍然对这个 api 的意义感到困惑,但案例已结束..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 2013-06-20
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多