如何在 java 组件中引用 Mule 主目录
How can I reference Mule home directory in java component
如何在 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
如何在 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