我正在实现一个返回二进制文件内容的web服务。文件大约100MB。 Web服务和客户端都是基于Axis2构建的。
返回数据的方法的返回类型的最佳好处是什么?
我尝试了byte [],但我总是在服务器端获得OutOfMemoryErrors。另外,我不太乐意将整个文件内容保存在内存中。有什么相似的东西我可以使用吗?
答案 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,而不必将整个文件保存在内存中。