2012-12-06 15 views
5

Possiedo un servlet che è in grado di ricevere dati [file] binari.Carica file binario di grandi dimensioni utilizzando Java Spring RestTemplate

Vorrei utilizzare Spring's RestTemplate() per caricare un file binario di grandi dimensioni sul servlet. Tuttavia non è possibile caricare interamente il file binario in memoria.

Finora i miei tentativi hanno provocato errori OutOfMemory, a indicare che i metodi hanno tentato di caricare l'intero file in memoria.

Come è possibile eseguire lo streaming di questi dati binari sul servlet? Preferibile in primavera o in altro modo in Java.

risposta

10

trovato la risposta:

https://jira.springsource.org/browse/SPR-7909



SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory(); 
requestFactory.setBufferRequestBody(false); 
RestTemplate rest = new RestTemplate(requestFactory); 

Ciò impedisce di caricare l'intera richiesta in memoria.

+0

Si noti che questo problema è stato risolto a partire dalla versione Spring 3.1. Quindi questo problema non dovrebbe più verificarsi se si utilizza la versione Spring> = 3.1. Altrimenti, lo snippet di codice sopra dovrebbe risolvere il problema. –

+1

@Doron: Io uso Spring 3.2.5 ma ho incontrato lo stesso problema, non sono sicuro che sia stato risolto. – taynguyen

Problemi correlati