【发布时间】:2013-03-24 19:07:01
【问题描述】:
我有一个网络服务调用,通过它可以上传 zip 文件。然后将文件转发到另一个服务进行存储、解压缩等。 现在文件存储在文件系统上,然后构建 FileSystemResource。
Resource zipFile = new FileSystemResource(tempFile.getAbsolutePath());
我可以使用 ByteStreamResource 来节省时间(在转发之前不需要将文件保存在磁盘上),但为此我需要构建一个字节数组。如果文件很大,我会收到“OutOfMemory : java heap space”错误。
ByteArrayResource r = new ByteArrayResource(inputStream.getBytes());
任何使用 RestTemplate 转发文件而不出现 OutOfMemory 错误的解决方案?
【问题讨论】:
-
您不能将输入流传递给其他服务吗?或者您必须将输入流写入文件,然后将文件句柄传递给服务。另外,不确定这与 Groovy 有何关系?
-
我没有找到任何方法来传递输入流。我使用了 Groovy 标记,因为代码在 groovy 中(java InputStream 没有 getBytes 方法)
-
啊,当你用 Java 风格编写它时,我被抛出了 ;-) 那么这个其他服务接受什么?
-
我没有提供这个作为答案,因为它的范围比您的问题的答案要大一些,但是您是否考虑过 Spring Integration 来解决这个问题?您基本上是在查看具有 Web 服务和 REST 适配器的声明检查模式。您可以通过 SI 框架为您完成很多工作。 static.springsource.org/spring-integration/reference/htmlsingle/…
标签: java spring groovy resttemplate