我正在实现一个返回二进制文件内容的网络服务。这些文件大约有 100MB 大。Web 服务和客户端建立在 Axis2 之上。
返回数据的方法的返回类型的最佳选择是什么?
我试过 byte[],但我总是在服务器端得到 OutOfMemoryErrors。另外,我不太高兴将整个文件内容保存在内存中。我可以使用类似流的东西吗?
我正在实现一个返回二进制文件内容的网络服务。这些文件大约有 100MB 大。Web 服务和客户端建立在 Axis2 之上。
返回数据的方法的返回类型的最佳选择是什么?
我试过 byte[],但我总是在服务器端得到 OutOfMemoryErrors。另外,我不太高兴将整个文件内容保存在内存中。我可以使用类似流的东西吗?
除了返回数据,你能返回一个临时 URL 指向这个保存为临时文件的大结果吗?或者您可以将您的文件作为一系列较小的结果返回吗?
“使用 Axis2 和带有附件的 SOAP 从 Web 服务下载二进制文件”一文准确描述了我正在寻找的解决方案。使用“带附件的 SOAP”(SwA) 将大块数据作为附件添加到 Web 服务的 SOAP 响应中。
我可以使用提供 InputStream 的 javax.activation.DataSource 并且不必将整个文件保存在内存中。