Это ситуация:
У нас есть несколько двоичных файлов (PDF, PPT, ZIPz и т. Д.), Которые хранятся на сервере, отличном от того, где находится наше приложение. Нам нужно сделать их доступными для пользователей нашего приложения. Но файлы имеют чрезвычайно конфиденциальную информацию, которая не может быть прочитана кем-либо еще, кроме пользователя, который имеет к ним доступ, а это значит, что нам нужно проверить пользователя, который пытается получить доступ к файлу, прежде чем он / она сможет его загрузить.
Вот как мы это решаем:
- Мы получаем файл с удаленного сервера, сохраняем его в не публичном месте.
- Мы читаем файл в байтовый массив, затем удаляем файл.
- Мы записываем файл через JSP, используя outputStream ответа. (Мы не можем очистить его через сервлет, потому что мы используем проприетарный MVC, который мы не можем изменить, поэтому все выходные данные являются JSP, поэтому мы получаем исключение java.lang.IllegalStateException, но оно работает).
Я обеспокоен тремя аспектами этого решения; Размер файла сильно влияет на размер кучи, размер файла ограничен макс. Байтом [Integer.MAXSIZE], и, наконец, мы получаем исключение java.lang.IllegalStateException каждый раз, когда кто-то загружает файл, потому что мы вызываем response.getOutputStream ( ), поэтому наш журнал сильно растет (мы не можем его очистить через сервлет, потому что мы используем проприетарный MVC, который мы не можем изменять или расширять)
Я почти уверен, что есть более элегантный способ сделать это.
Есть идеи?