从Web服务返回大块二进制数据的最佳方法是什么?

时间:2009-10-01 12:28:54

标签: java web-services axis2

我正在实现一个返回二进制文件内容的web服务。文件大约100MB。 Web服务和客户端都是基于Axis2构建的。

返回数据的方法的返回类型的最佳好处是什么?

我尝试了byte [],但我总是在服务器端获得OutOfMemoryErrors。另外,我不太乐意将整个文件内容保存在内存中。有什么相似的东西我可以使用吗?

2 个答案:

答案 0 :(得分:7)

您可以返回指向保存为临时文件的大结果的临时URL,而不是返回数据吗? 或者您可以将文件作为一系列较小的结果返回吗?

答案 1 :(得分:3)

文章"Downloading a Binary File from a Web Service using Axis2 and SOAP with Attachments"完全描述了我正在寻找的解决方案。使用“SOAP with Attachments”(SwA)将大块数据作为附件添加到Web服务的SOAP响应中。

我可以使用提供InputStream的javax.activation.DataSource,而不必将整个文件保存在内存中。