Как загрузить ресурсы в Tomcat через Java File API - PullRequest
0 голосов
/ 01 апреля 2011

Мне нужно использовать библиотеку, которая принимает путь к каталогу и загружает его через File(path);. Каким должен быть путь в контексте веб-приложения tomcat?

Я всегда работаю с classpath, но этот API действительно не продуман ...

У меня нет опыта работы с контекстом выполнения Java в Tomcat, но мне кажется плохой идеей сделать что-то подобное

System.getProperty("catalina.base") + "webapps/app/WEB-INF/classes/profiles"

Предоставляет ли tomcat путь выполнения Java (AKA $ PWD) для ресурсов в контексте приложения?

Ответы [ 2 ]

4 голосов
/ 01 апреля 2011

Используйте ServletContext#getRealPath() для преобразования относительного пути к веб-приложению в абсолютный путь к файловой системе диска.Учитывая ваш пример, следует выполнить следующее:

String path = getServletContext().getRealPath("/WEB-INF/classes/profiles");
File file = new File(path);
// ...

Обратите внимание, что для этого необходимо расширить WAR, в противном случае он вернет null.Tomcat по умолчанию расширяет WAR, но некоторые другие сервлетконтейнеры / конфиги этого не делают.Имейте это в виду в отношении портативности.

2 голосов
/ 01 апреля 2011

Ресурсы приложения НЕ обязательно существуют в файловой системе, поэтому поиск по контекстному пути просто неверен.

Вы должны предоставить внешнюю конфигурацию для вашего приложения (файл свойств или БД), где вам следуетопределить путь в зависимости от окружающей среды.

Предлагаемый порядок поиска конфигурации:

  1. System.properties: -Dmy.configuration = / home / tomcat / my.properties
  2. Системная среда: MY_CONFIGURATION =/home/tomcat/my.properties
  3. Значение по умолчанию: ./my.properties (для Tomcat обычно это папка bin, но не гарантируется)
  4. Ошибка и жалоба.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...