Загрузите большой двоичный файл с помощью Java Spring RestTemplate

У меня есть сервлет, который может получать двоичные данные [файлы].

Я хотел бы использовать Spring RestTemplate() для загрузки большого двоичного файла в сервлет. Однако невозможно полностью загрузить двоичный файл в память.

До сих пор мои попытки приводили к ошибкам OutOfMemory, указывающим на то, что методы пытались загрузить весь файл в память.

Как я могу передать эти двоичные данные сервлету? Предпочтительно в Spring или иначе в Java.


person Hylton Peimer    schedule 06.12.2012    source источник


Ответы (1)


Нашел ответ:

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



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

Это предотвращает загрузку всего запроса в память.

person Hylton Peimer    schedule 07.12.2012
comment
Обратите внимание, что это исправлено в версии Spring 3.1. Таким образом, эта проблема больше не должна возникать, если вы используете версию Spring ›= 3.1. В противном случае приведенный выше фрагмент кода должен решить проблему. - person Doron Gold; 22.04.2014
comment
@Doron: я использую Spring 3.2.5, но столкнулся с той же проблемой, я не уверен, что она была исправлена. - person taynguyen; 30.07.2014