Ответ 1
Решена проблема, используя ответ из двоичных потоков ввода и вывода с использованием JERSEY?
Я использую Java-Джерси для реализации службы REST. Одна вещь, которую должен предоставить мой сервис, - это вариант загрузки файлов. Эти файлы довольно большие и построены из данных из db.
В настоящее время я извлекаю все данные из db и сохраняю их в файл и возвращая
Response.ok().entity(new FileInputStream(file)).build();
Есть ли способ, как я могу начать обслуживать файл без полной загрузки данных из db, но поскольку данные поступают из db, добавьте его в выходной поток?
Решена проблема, используя ответ из двоичных потоков ввода и вывода с использованием JERSEY?
Как насчет
File fileToSend = getFile();
return Response.ok(fileToSend, "application/zip").build();
Тип носителя может быть установлен в соответствии с отправляемым файлом.
Это выглядит довольно прямолинейно, но что более важно, читают ли эксперты java это проблема производительности с решением?
Итак, вы хотите получить поток из своей базы данных?
Я не уверен, что это возможно.
Но вам не нужно писать временный файл для отправки ваших данных. Вместо того, чтобы записывать в файл, вы можете использовать ByteArrayInputStream и помещать свои данные там с байтовым массивом.
зависит от типа базового соединения/драйвера базы данных, если у вас есть доступ к уровню JDBC (например, с использованием Hibernate), должно быть возможно передавать данные с использованием JDBC-потокового API, затем принимать потоки из ResultSet и передавать их в Jersey Response Builder. Я не сделал этого сам, хотя..
здесь: