Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Mule应用程序中使用参数_Java_Spring_Properties_Mule - Fatal编程技术网

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

我已经为Mule流编写了一个自定义Java组件。我遵循并实现了可调用接口。此外,我还需要通过属性配置我的mule应用程序,因此我遵循了所描述的方法


我的问题是,我无法从组件的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;
    }

}