我刚刚开始使用mule,并且无法弄清楚如何将我的请求标头的一部分作为参数/参数传递给Java组件。
我的Java组件如下
public String processHeader(String in)
{
//process header
System.out.print(" Header" + in);
}
我已经能够从流程
以下列方式访问processHeader
<component>
<method-entry-point-resolver>
<include-entry-point method="processHeader" />
</method-entry-point-resolver>
<singleton-object class="my.test.mule.Processor" />
</component>
使用http://localhost:8080/test
访问上述内容。打印Header test
我可以使用以下
转储标题的内容 <logger level="INFO" doc:name="Logger" message="#[headers:INBOUND:*]"/>
但我似乎无法弄清楚如何将message
作为参数传递给processHeader
,我也找不到任何相关的例子。任何帮助将不胜感激。
顺便说一句,如果重要的话,我会使用Mule 3.5
。
答案 0 :(得分:3)
为您的java组件实现Callable接口。当重写默认方法时,您将获得eventContext作为参数,在其中您可以找到mule消息,这反过来使您可以访问标头和有效负载。样品在这里:
import org.mule.api.MuleEventContext;
import org.mule.api.lifecycle.Callable;
import org.mule.api.transport.PropertyScope;
public class Test implements Callable {
@Override
public Object onCall(MuleEventContext eventContext) throws Exception {
eventContext.getMessage().getProperty("header1", PropertyScope.INBOUND);
return null;
}
}
答案 1 :(得分:1)
您有多种选择:
可以在组件条目上使用的参数注入注释 点和变换器方法,这个注释可以用来执行 消息有效负载上的Mule表达式,传递结果 进入方法。
另外:
此注释控制当前邮件入站标头的方式 传递给一个方法。注释支持,Map,List,single 标题,通配符和可选条目。它可以用在组件上 入口点和@Transformer方法。
可能与:
一起使用可以在组件条目上使用的参数注入注释 使用@Transformer定义的点和变换器方法 注释,此注释控制当前消息有效负载的方式 通过执行自动转换传递给方法 消息有效负载以匹配带注释的参数类型。例如,如果 你期待一个XML文档,这可以注入到 组件入口点并自动转换为 org.wc3.dom.Document。
您也可以按照不同的响应中的说明实现Callable,但这比此解决方案的表达要差得多。