2010-12-14 70 views
0

我已经被赋予了将二进制数据(如图片,音乐,缩略图等)嵌入到xml元数据容器中以便通过REST接口发布整个包的任务。目前我们正在使用泽西岛,并在我们的项目中发布。 我真的不想回到肥皂/ wsdl(这似乎是每个基于ws的问题的默认答案)或任何容器格式,如拉链只是为了通过电线获得该数据,所以我GOOGLE了一段时间更合适的解决方案rest + xop /嵌入在xml响应中的二进制数据

我发现推荐使用XOP格式将内容嵌入到XML中,这是SOAP中使用的MTOM协议的一部分,但我没有看到通过REST直接提供XML + XOP响应的解决方案。

我的问题:有人可以给我一个提示如何使用Jersey/spring实现XOP + REST吗?我已经看到了暗示有人做了它之前的帖子...

最好的问候,

回答

0

你为什么要二进制数据嵌入到XML?有很多方法可以将二进制资源与其对应的元数据相关联,而无需将其填充到单个表示中。

您正在击败REST HTTP的主要优势之一。根据需求处理多种不同媒体类型的能力是使用基于HTTP的REST比SOAP更有效的原因之一。

考虑检索包含链接到二进制资源的元数据的XML表示,如Atom所做的那样。如果您想先检索二进制文件,那么请考虑链接标题指向元数据。尝试将二进制数据填充到XML中有很多更好的方法。

+0

感谢您的回答。可悲的是,分割内容不是选择。其中一个原因是,根据acls捆绑内容的背后有一个安全模型。另一个原因是捆绑包必须完全传输 - 想象一下如果由于客户端没有立即发起请求而丢失了部分消息,则会导致一个致命的情况。最后也是最重要的是,现在我不能做项目范围的决定:) – Tim 2010-12-14 15:29:18

+0

@Tim根据XOP规范'http:// www.w3.org/TR/xop10 /'你会只需使用'Multipart/Related'作为媒体类型。这种媒体类型的编码和解码与REST完全正交,所以诀窍是找到一个可处理'Multipart/Related'内容的Java库。那时候,我甚至不知道你需要XOP了。 – 2010-12-15 12:33:29

+0

感谢亲爱的。在某些时候,这是我之前发现的。如果我碰巧有足够的时间,我会尝试和评估这个解决方案,如果它证明成功,我会在这里放下更多的线。 – Tim 2010-12-16 11:56:35