如何在 java 组件中引用 Mule 主目录



如何在 Java 组件中引用 Mule 的主目录,例如:

String directory = ${Mule_Home};
一种方法

是首先将 #[mule.home] 的值保存在变量中:

    <set-variable value="#[mule.home]" variableName="mule_home"
        doc:name="Variable" />

然后,您可以从组件访问它,如下所示:

    MuleMessage message = eventContext.getMessage();
    String mule_home = message.getProperty("mule_home", PropertyScope.INVOCATION);

另一种实际上更好的方法是实现MuleContextAware并计算组件中的mule表达式,如下所示:

public class MyComponent implements Callable, MuleContextAware {
MuleContext context;
@Override
public Object onCall(MuleEventContext eventContext) throws Exception {
    ExpressionLanguage el = context.getExpressionLanguage();
    String result = el.evaluate("mule.home");
    return result;
}
@Override
public void setMuleContext(MuleContext context) {
    this.context = context;
}
// include getters and setters for context

这里的一种方法是按名称"MULE_HOME"设置环境变量

并使用以下命令在 Java 组件中检索它:-

System.getenv("MULE_HOME");

希望对您有所帮助!祝你好运!

为了补充上面提到的 Clare,您可以简单地在 MuleContext 上调用该方法,该方法直接为您提供MULE_HOME目录的完整路径,作为使用 ExpressionLanguage.evaluate() 方法的替代方法。

public class MyComponent implements Callable, MuleContextAware {
MuleContext context;
@Override
public Object onCall(MuleEventContext eventContext) throws Exception {
    return context.getConfiguration().getMuleHomeDirectory();
}
@Override
public void setMuleContext(MuleContext context) {
    this.context = context;
}
// include getters and setters for context

最新更新