2012-12-06 16 views
5

Mam aplet, który jest w stanie odbierać dane binarne [pliki].Prześlij duży plik binarny do Java Spring RestTemplate

Chciałbym użyć Spring's RestTemplate(), aby załadować duży plik binarny do serwletu. Jednak nie jest możliwe załadowanie pliku binarnego do pamięci.

Do tej pory moje próby spowodowały błędy OutOfMemory, wskazując, że metody próbowały załadować cały plik do pamięci.

Jak mogę przesyłać strumieniowo te dane binarne do serwletu? Preferowane na wiosnę lub w inny sposób w Javie.

Odpowiedz

10

znalazł odpowiedź:

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



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

Zapobiega ładowanie całą prośbę do pamięci.

+0

Należy zauważyć, że jest to poprawione od wersji 3.1 Spring. Tak więc ten problem nie powinien już występować, jeśli używasz wersji Spring> = 3.1. W przeciwnym razie powyższy fragment kodu powinien rozwiązać problem. –

+1

@Doron: Używam Spring 3.2.5, ale spotkałem się z tym samym problemem, nie jestem pewien, czy zostało to naprawione. – taynguyen