2014-01-27 5 views
1

Я написал пользовательский компонент Java для потока Mule. Я следовал these instructions и реализовал интерфейс Callable. Кроме того, мне нужно настроить приложение mule через свойства, поэтому я выполнил описанный подход here.Использование параметров в приложении Mule

Проблема заключается в том, что я не смог получить значения свойств из кода Java компонента, то есть с помощью метода onCall(). Мне нужен простой способ передать некоторые параметры через конфигурацию в мой пользовательский компонент mule.

ответ

2

В следующем примере имя свойства сконфигурировано в abc.properties. В потоке он задается как переменная потока и доступен в компоненте java.

Вот поток

<context:property-placeholder location="abc.properties"/> 

<flow name="EchoFlow" doc:name="EchoFlow"> 
    <http:inbound-endpoint exchange-pattern="request-response" 
     host="localhost" port="8084" doc:name="HTTP" 
     doc:description="Process HTTP requests or responses." /> 
    <set-variable value="${name.from.config}" variableName="name" 
     doc:name="Variable" /> 
    <component class="TestComponent" doc:name="Java"/> 
    <logger doc:name="Logger" level="INFO" message="#[name]" /> 
</flow> 

Вот компонент

import org.mule.api.MuleEventContext; 
import org.mule.api.lifecycle.Callable; 
import org.mule.api.transport.PropertyScope; 

public class TestComponent implements Callable { 

    @Override 
    public Object onCall(MuleEventContext eventContext) throws Exception { 
     // This is how you access a property 
     String httpMethod = eventContext.getMessage().getProperty("http.method", PropertyScope.INBOUND); 
     System.out.println("The value of property name is >>>" + httpMethod); 

     // This is how you access flow variable 
     String name = eventContext.getMessage().getInvocationProperty("name"); 
     System.out.println("The value of property name is >>>" + name); 
     return name + " > " + httpMethod; 
    } 

} 
+0

Я вижу, спасибо. Посмотрев здесь http://www.mulesoft.org/docs/site/current3/schemadocs/schemas/mule_xsd/elements/set-variable.html, я понял, почему я запутался. Это немного сложно, но имеет смысл: вам нужен трансформатор, чтобы добавить в сообщение переменную (которая может быть значением свойства/конфигурации), чтобы получить ее внутри кода Java компонента:) – Guido

Смежные вопросы