Mule表达式语言无法解析方法

时间:2017-03-09 19:09:43

标签: mule mule-el mvel

我遇到了这个问题:

package com.acme;

Class CircuitBreakerUtil {

    public static boolean canAttempt(String breakerName) {
        return true;
    }
}

我的春天宣言

<spring:bean id="circuitBreakerUtil" class="com.acme.CircuitBreakerUtil" scope="singleton"/>

我的简短表达:

             <choice doc:name="ApiCircuitBreakerName Is Up?">
        <when expression="#[app.registry.circuitBreakerUtil.canAttempt('ApiCircuitBreakerName')]">
                <flow-ref name="CircuitBreakerFlow" doc:name="CircuitBreakerFlow"/>
               <logger message="Passed CircuitBreakerFlow" level="INFO" doc:name="Logger"/>
        </when>
        <otherwise>
               <flow-ref name="EmailTechnicalSupportFlow" doc:name="EmailTechnicalSupportFlow"/>
               <flow-ref name="fallbackFlow" doc:name="fallbackFlow"/>
               <logger message="Passed FallbackFlow" level="INFO" doc:name="Logger"/>
        </otherwise>
    </choice>

并收到此错误:

Caused by: [Error: unable to resolve method:     com.acme.CircuitBreakerUtil.canAttempt(java.lang.String) [arglength=1]]
[Near : {... app.registry.circuitBreakerUti ....}]

1 个答案:

答案 0 :(得分:0)

为什么你可以在你需要的地方尝试

使用MEL表达式

#[com.acme.CircuitBreakerUtil.canAttempt(param)]

即使你可以在这里使用你的表达组件。

此外,您可以将其声明为全局表达式,并在任何地方重复使用。