Каков наилучший способ вернуть большие куски двоичных данных из веб-службы? - PullRequest
7 голосов
/ 01 октября 2009

Я реализую веб-сервис, который возвращает содержимое двоичных файлов. Файлы размером около 100 МБ. Веб-сервис и клиент основаны на Axis2.

Какое самое лучшее соединение для типа возврата метода, который возвращает данные?

Я попытался byte [], но всегда получаю OutOfMemoryErrors на стороне сервера. Кроме того, я не очень рад иметь весь файл в памяти. Есть ли что-то похожее на поток, которое я могу использовать вместо этого?

Ответы [ 2 ]

7 голосов
/ 01 октября 2009

Вместо того, чтобы возвращать данные, вы можете вернуть временный URL-адрес, указывающий на этот большой результат, сохраненный во временном файле? Или вы можете вернуть свой файл в виде серии меньших результатов?

3 голосов
/ 02 октября 2009

Статья "Загрузка двоичного файла из веб-службы с использованием Axis2 и SOAP с вложениями" описывает именно то решение, которое я искал. Большие куски данных добавляются в качестве прикрепления к ответу SOAP веб-службы с использованием «SOAP с вложениями» (SwA).

Я могу использовать javax.activation.DataSource, который предоставляет InputStream, и мне не нужно хранить весь файл в памяти.

...