Java 在Mule应用程序中使用参数
我已经为Mule流编写了一个自定义Java组件。我遵循并实现了可调用接口。此外,我还需要通过属性配置我的mule应用程序,因此我遵循了所描述的方法Java 在Mule应用程序中使用参数,java,spring,properties,mule,Java,Spring,Properties,Mule,我已经为Mule流编写了一个自定义Java组件。我遵循并实现了可调用接口。此外,我还需要通过属性配置我的mule应用程序,因此我遵循了所描述的方法 我的问题是,我无法从组件的Java代码中检索属性值,即使用onCall()方法。我需要的是一种通过配置将一些参数传递给自定义mule组件的简单方法。在下面的示例中,属性名称在abc.properties中配置。在流中,它被设置为流变量,并在java组件中访问 这里是流程 <context:property-placeholder locatio
我的问题是,我无法从组件的Java代码中检索属性值,即使用onCall()方法。我需要的是一种通过配置将一些参数传递给自定义mule组件的简单方法。在下面的示例中,属性名称在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>
我明白了,谢谢。在看了这里之后,我意识到我为什么会感到困惑。这有点复杂,但很有意义:您需要一个转换器向消息中添加一个变量(可以是属性/配置值),以便在组件的Java代码中检索它:)
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;
}
}