2015-01-23 1 views
0

Как я могу ссылаться на домашний каталог Mule в компоненте Java, например:Как я могу ссылаться на домашний каталог Мул в Java компонент

String directory = ${Mule_Home}; 
+0

Вы создали переменную окружения для этого (Mule_Home)? – Vihar

+0

Я не знаком с мулом, но является ли это общесистемной переменной среды? Другими словами, будет работать 'System.getProperty (...)'? – vikingsteve

ответ

4

Одним из способов вы можете сделать это первым сохранить значение # [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 и оценить мул выражение в компоненте следующим образом:

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 
+0

Почему вы хотите установить переменную в потоке Mule? Это не будет требоваться во всем потоке мула после этого, и если это требуется в нескольких разных потоках? тогда ? установить его в каждом потоке? – Vihar

+0

Я изменил свой ответ, чтобы включить лучший способ получить мул домой. НТН – clare

1

Одним из подходов здесь может быть, чтобы установить переменную окружения под названием «MULE_HOME»

и получить его в компоненте java, используя: -

System.getenv("MULE_HOME"); 

надеюсь, что это поможет! Удачи!

0

Чтобы добавить к сказанному выше, вы можете просто вызвать метод в 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 
Смежные вопросы