我使用Jersey作爲我的REST實現,JAXB用於表示我的類。 我已經做了一個小文件傳輸機制。在客戶端,在將其設置爲JAXB對象之前,該文件將轉換爲BASE64字符串。 JAXB對象隨後被髮送到澤西島的服務器。使用Jersey發送大型JAXB對象會生成OutOfMemoryError
它適用於大小不超過50 MB的文件,但當我嘗試發送500 MB文件時,我的客戶端上會收到OutOfMemoryError
。我已將-Xms
和-Xmx
設置爲2048米,但它沒有幫助,但我仍然收到錯誤消息。
我能做些什麼來使它處理非常大的文件?
我會嘗試使用'HttpUrlConnection'來上傳/下載文件。我猜它的Content-Type應該是HTTP頭中的「application/octet-stream」。 – Rox
在客戶端,您*可能*仍然能夠使用相同的API。一些WS客戶端API具有獲取底層請求的機制或getInputStream()方法。客戶端可以從那裏讀取流。是的,這是在服務器端設置的正確內容類型。如果您想使用瀏覽器進行測試,請考慮設置內容處置標頭:http://stackoverflow.com/questions/1012437/uses-of-content-disposition-in-an-http-response-header這樣Web瀏覽器會提示你保存文件的位置,而不是試圖顯示它。 – Keith
我忘了提及我正在使用豐富的應用程序而不是Web表單來發送文件。如果我失敗,我會明天嘗試'HttpUrlConnection'並返回這裏。 :-) – Rox