Использование getSystemResource для доступа к файлам из сервлета - PullRequest
1 голос
/ 19 мая 2011

Я хочу получить доступ к файлам из сервлета, используя getSystemResource.Эти файлы находятся внутри самого проекта и на жестком диске.Для файлов внутри проекта, которые я использовал:

  ServletContext ctx = getServletContext();
  InputStream is = ctx.getResourceAsStream("/testing.txt");

Работает, если я помещаю файлы в папку build/web, но при очистке и сборке проекта все файлы удаляются.Куда мне поместить файлы?

Для файлов вне проекта я использую объект File:

 File file = new File("c://tmp//testing.txt");
 InputStream is= new FileInputStream(file); 

Это хорошая практика?

1 Ответ

1 голос
/ 19 мая 2011

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

Обычная практика - хранить эти файлы по fixed пути внеконтекст веб-приложения.Вы определенно не должны использовать папку tmp / temp для этого.Эта папка может периодически очищаться базовой платформой.Используйте, например, /var/webapp/upload.Правильно задокументируйте это так, чтобы serveradmin создал его заранее.Сделайте его при необходимости настраиваемым с помощью некоторого параметра web.xml.

Или когда среда запрещает создание папок и / или запись на диск, тогда последним лучшим вариантом будет сохранение этих файлов в базе данных SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...