Как лучше всего вернуть большие фрагменты двоичных данных из веб-службы?

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

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

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


person ftl    schedule 01.10.2009    source источник


Ответы (2)


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

person Pierre    schedule 01.10.2009

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

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

person ftl    schedule 02.10.2009