from("direct:marshal-xml")
.marshal(jaxbDataFormat)
.to("direct:validate-and-send");
根据名为“MessageType”的头属性,我们希望使用不同的jaxbDataFormat对象来封送至XML。我们可以在路由本身中进行选择,但我们希望使用一个专用服务,该服务接受字符串输入messageType,并返回正确的JAXBDataFormat。
现在的问题是如何将标头属性“MessageType”作为参数传递给服务。我们希望使用如下内容:
from("direct:marshal-xml")
.marshal(jaxbDataFormatService.getDataFormat(getHeader("messageType")))
.to("direct:validate-and-send");
但是我似乎无法从标题中获得作为字符串的messageType。对路由进行“建模”的routebuilder和从该模型生成的运行时路由之间似乎存在差异。
simple("${header.messageType}").evaluate(exchange, String.class);
您总是可以实现自己的“复合数据格式”,例如,通过实现org.apache.camel.spi.dataformat
,它将了解您想要使用的所有数据格式,并使用您想要的数据格式。
类似这样的东西,只是为了给你一个想法:
public class MyCompositeFormat implements DataFormat, CamelContextAware {
public MyCompositeFormat(DataFormat... formats) {
// store them to local variable
}
public CamelContext getCamelContext() {
return camelContext;
}
public void setCamelContext(CamelContext camelContext) {
this.camelContext = camelContext;
}
public void marshal(Exchange exchange, Object graph, OutputStream stream) throws Exception {
if (exchange.getIn().getHeader("SomeHeader",String.class).equals("whatever") {
return someFormatYouStored.marshal(exchange,graph,stream);
} else {
return anotherFormat.marshal(exchange,graph,stream);
}
}
public Object unmarshal(Exchange exchange, InputStream stream) throws Exception {
// similar approach to marshal
}
}
在你的路线上:
MyCompositeFormat myCompositeFormat = new MyCompositeFormat(otherFormats);
from("direct:marshal-xml")
.marshal(myCustomFormat)
.to("direct:validate-and-send");
问题内容: 我正在尝试通过使用JSON格式的字符串初始化Javascript变量来加载数据表。如果我声明: 那么我的表将正确加载该行。 我尝试在脚本之前初始化Java字符串,然后将该对象传递给Javascript变量,如下所示: 我的表无法识别这一点,并且在尝试以这种方式传递行时无法加载该行。如何正确地将Java字符串传递给Javascript,以便我的表能够加载数据? 问题答案: 尝试使用引号。
问题内容: 我试图对一个javascript对象进行字符串化,然后将该字符串作为参数传递给Code Behind中的WebMethod。我无法正常工作,因为我收到500的内部服务器错误,并且stacktrace指出参数值丢失。 这是JavaScript代码: 这是网络方法: 好像我已经尝试了通过google搜索以及在此处找到的所有内容。 我还尝试了很多人参考的本指南:http : //encosi
在Camel 2.10.1上,以下工作正常: 正在讨论的方法接受一个字符串参数 迁移到2.10.6,这不再起作用,它试图调用TEST作为另一个类。我尝试过用${}包装,尝试使用“ 我发现的唯一解决方案是使用常量语言将值放在标头中,然后使用简单调用标头。显然,这不是很干净... 你有什么想法怎么做吗? 干杯
这个网页让我相信我可以将一个空字符串传递给,以关闭图形的y记号。 但是,当我尝试这样做时,我得到以下错误: 怎么回事?如果这种关闭y型刻度的方法是不正确的,那么正确的方法是什么?
我试图通过C#代码传递此字符串,但失败了: soap:body1479374 System.xml.XmlDocument文档=新建System.xml.XmlDocument();Doc.LoadXML(字符串); 尝试发送作为整体和作为3个部分,但在A节内失败 string Sectiona=@“ soap:body ”; 字符串段B=“1479374”; 字符串节C=“”; 字符串数据=段A
我有一个xml节点,我从一个xml文件中解析了它,其中包含以下代码 我必须将congigNode传递给另一个类中的方法。这个项目在Camel中,我必须测试一个类,它有一个接受configNode作为输入的方法。我是否在ProducerTemplate的发送体中添加configNode 或者在routebuilder的某个地方 我是骆驼队的新手,日子不好过。请帮忙!