2011-06-20 114 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 –