我有一个测试方法:
@Test
public void testHello_with_muleXmlConfig() throws Exception {
MuleClient client = new MuleClient("mule-config-test.xml");
client.getMuleContext().start();
MuleMessage result = client.send("http://127.0.0.1:8080/hello", "some data", null);
assertNotNull(result);
assertNull(result.getExceptionPayload());
assertFalse(result.getPayload() instanceof NullPayload);
assertEquals("hello", result.getPayloadAsString());
}
这里(client.send(“http://127.0.0.1:8080/hello”,“some data”,null)),我正在传递参数/ data ='some data'。
我有一节课:
public class HelloWorld {
public String sayHello() {
return "hello";
}
}
在mule-config.xml中作为spring bean公开:
<spring:bean id="helloWorld" class="org.mule.application.hello.HelloWorld"/>
<flow name="HelloWorld">
<inbound-endpoint address="http://127.0.0.1:8080/hello"/>
<invoke method="sayHello" object-ref="helloWorld"/>
</flow>
我应该怎么做才能将参数'hello'传递给'sayHello()'方法。如果只是将其更改为'sayHello(String text)' - 它将无效。
答案 0 :(得分:4)
您需要将其添加到invoke元素:
methodArguments="#[message.getPayload()]" methodArgumentTypes="java.lang.String"
答案 1 :(得分:0)
不确定invoke
如何/如果有效:我建议你改用component
。
如果您将方法更改为接受String
,例如:
public String sayHello(final String text)
{
return "hello:" + text;
}
然后您还需要使用object-to-string-transformer
将入站输入流反序列化为String:
<flow name="HelloWorld">
<inbound-endpoint address="http://127.0.0.1:8080/hello" />
<object-to-string-transformer />
<component>
<spring-object bean="helloWorld" />
</component>
</flow>
答案 2 :(得分:0)
试试这个:
<invoke object-ref="helloWorld" method="sayHello" methodArguments="#[message.inboundProperties.'http.query.params'.name]" doc:name="Invoke" />
这是调用的方法:
public String sayHello(String name){ return String.format(“Hello%s!”,name); }