2011-06-20 115 views
2

我使用Spring Remoting通过HttpInvoker开发了一个客户端(Eclipse)服务器(Tomcat上的Spring Framework)应用程序。使用Spring Framework进行流式传输

某些用例需要将大文件(> 150MB)从服务器传输到客户端。由于我们在客户端的32位系统上,我总是会遇到Java堆大小问题(尽管我将Xmx设置为1014 MB - 但文件甚至可能更大)。

我的问题是: 有没有什么办法通过HttpInvoker或其他什么来解决这个问题?

+0

'HttpInvoker'不是作为一个文件传输接口,它在那里用于RPC调用。如果您需要传输大量数据,那么您确实需要使用更合适的机制,即客户端和服务器上的手写IO流。 – skaffman

+1

有没有经过验证的框架来做这种io的东西? – Philipp

+0

如何将需要传输大文件的部分从RPC迁移到['REST'](http://en.wikipedia.org/wiki/Restful)?当你可以用简单的'GET'请求下载文件时。 –

回答

3

看到rmiio:RMIIO

RMIIO是库这使得它尽可能简单以流大量使用RMI框架(或就此而言任何RPC框架)的数据。谁需要这个?那么,如果你曾经需要从RMI客户端发送文件到RMI服务器,你就会遇到这个问题。而且,如果您确实设法实现了一个基本解决方案,那么在第一次尝试发送2GB文件时可能会抛出OutOfMemoryError。由于RMI的设计,这种常见且看似简单的问题实际上很难以高效且稳健的方式解决。

你可以单独使用它或者使用任何其他rmi框架,比如httpInvoker。

+1

已经完成整合:http://bitbucket.org/ruediste/rmiio-springhttpinvoker – ruediste

+0

fyi。,RMIIO是LGPL –