云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

云存储_高端网站建设制作_安全稳定

小七 141 0

最近有人问我,是否有一种方法可以直接在Content修饰符中处理sapcpi中的消息附件,而不必先读取Groovy脚本中的附件。因为我不太确定,我建立了一个小的概念证明,我应该说什么?真管用!

在下面的文章中,我想向您展示如何使用Apache简单表达式语法直接访问Content修饰符中的消息附件(或者可以使用简单表达式的任何其他地方)。

测试场景

作为测试场景,我设计了一个简单、同步的SOAP接口。接口接受包含SOAP附件的SOAP消息,将SOAP主体和附件映射/转换为响应消息,然后将其返回给调用者。

下面的SoapUI屏幕截图显示了请求消息和预期结果。

(单击屏幕截图将其放大)

相应的IFlow仅由一个发送者通道和一个内容修改器组成。Groovy脚本或类似的代码是没有必要的。

现在测试设置已经清楚了,我们可以看看如何在Content修饰符中处理附件。

实现

与body不同,大数据好就业吗,body可以通过${body}访问,物联网培训,或者例如,云服务器服务,可以通过${属性.propertyName},无法直接访问附件。但是,通过查看Apache简单文档,生态环境大数据,我们可以使用${Exchange}访问Exchange容器。从交换容器开始,家居智能化系统价格,我们就可以一直到附件。

有了这些知识,我们现在可以直接在内容修改器中访问附件。我们可以使用getAttachmentNames()方法读取名称,使用getAttachments()方法读取数据本身。

使用${exchange}可以将Camel exchange容器作为"DefaultExchange"接口。从那时起,您可以调用DefaultExchange类提供给您的所有函数。

还可以查看以下类的JavaDOCs,以便更好地理解:

DefaultExchange:https://www.javadoc.io/doc/org.apache.camel/camel-core/2.20.4/org/apache/camel/impl/DefaultExchange.html信息:https://www.javadoc.io/static/org.apache.camel/camel-core/2.21.0/org/apache/camel/Message.html附件:https://www.javadoc.io/static/org.apache.camel/camel-core/2.21.0/org/apache/camel/Attachment.html数据处理程序:https://docs.oracle.com/javase/8/docs/api/javax/activation/DataHandler.html?is external=true

结论

通常可以使用Apache简单表达式直接读取附件。但是,由于不可能使用简单的表达式来编写循环或迭代数组/映射的条目,因此这种访问只有在附件的数量已知/固定的情况下才有意义。(否则您无法通过它们的索引访问条目,例如getAttachmentsNames()[0])。