Как получить путь к каталогу развертывания в приложении JSF? - PullRequest
4 голосов
/ 09 августа 2010

Можно ли узнать путь развертывания из приложения JSF?

Еще один вопрос (если ответ на предыдущий вопрос верен): законно ли хранить там некоторые загруженные файлы?

1 Ответ

11 голосов
/ 09 августа 2010

Можно ли узнать путь развертывания из приложения JSF?

Не напрямую, вам нужно получить ServletContext из ExternalContext следующим образом:

ServletContext servletContext = (ServletContext) externalContext.getContext();

Он, в свою очередь, предлагает известный и сомнительный getRealPath() метод.

String webContentRoot = servletContext.getRealPath("/");

Если вы уже используете JSF 2.0, вы можете использовать ExternalContext#getRealPath().


Еще один вопрос (если ответ на первыйвопрос верный): законно ли хранить там какие-то загруженные файлы?

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

Если вы хотите иметь немного большепостоянное хранилище, рассмотрите возможность хранения его по фиксированному пути вне веб-приложения, например /var/webapp/upload или около того.Альтернативой является их хранение в базе данных, это увеличило бы переносимость, но не забудьте сохранить некоторые метаданные (имя, тип контента, последнюю измененную метку времени и т. Д.) Вместе с содержимым файла, чтобы у вас было что индексировать / искать / кэшироватьна.

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