【发布时间】:2018-02-27 07:14:24
【问题描述】:
我们正在编写一个分为几个层次的 MULE REST 服务。
API 层(基于 RAML)接收入站请求并准备一些 flowVar,以便较低层知道如何继续。
第二层也是服务定义的,所以每个服务都有一个流。
最后,第三层包含一个唯一的流,它根据上层配置的flowVars,使用HTTP请求组件对所需的第三方服务进行调用。
在这第三层中,制作了一些审计寄存器,以便了解我们发送和接收的内容。因此,我们的审计组件(一个自定义的 MULE 连接器)需要将有效负载的内容写入我们的数据库,因此需要 message.getPayloadAsString()(或类似的)。如果我们使用一个干净的getter(如message.getPayload()),则只获取数据类型并因此写入数据库。
问题就在这里。接收到的每个有效负载似乎都是一个 BufferInputStream,并且在执行message.getPayloadAsString() 时,内部转换似乎正在影响有效负载。这通常不会成为问题,除了我们发现的一种情况:我们调用的服务之一返回一个 PNG 文件,因此message.getPayloadAsString() 将其转换为字符串并破坏图像。
我们已尝试克隆有效负载以保护其中一个副本免受强制转换,但作为对象,它没有实现 Cloneable 接口;我们尝试以任何其他单一方式复制有效负载,但只生成一个新的引用;我们已经尝试序列化有效负载以从序列化数据创建新副本,但 Object 也没有实现 Serializable 接口......一切都没用。
任何帮助、想法或建议将不胜感激。
【问题讨论】:
-
感谢@AndrewKoropets 编辑帖子中的格式。我什至没有注意到这是错误的。 :-)
标签: serialization mule png clone payload