Проще говоря, не полагайтесь на catalina.base
, это ваша первая проблема:)
Или, точнее, Java-сервлет API предоставляет вам доступ к ресурсам внутри вашего веб-приложения, поэтому ваше приложение действительно переносимо (не только между серверами, но и вы можете поместить его в любое место в файловой системе, заархивировав его как войну). или взорвался)
Скажем, вы поместили свой файл в <webapp-root>/WEB-INF/somename.properties
, тогда это то, что вы делаете в своем сервлете, слушателе или других веб-классах:
getServletContext().getResourceAsStream("/WEB-INF/somename.properties");
См. Аналогичный вопрос здесь .
Другой альтернативой является использование обычного Java API для поиска файлов в вашем classpath, например this.getClass().getResource("/somename.properties")
. В случае веб-приложения этот файл будет найден под /WEB-INF/class/
или в любом банке под /WEB-INF/lib/
.
Наконец, если вы не можете поместить файл в ваше веб-приложение, вы можете поместить его в любое место на жестком диске и использовать некоторый параметр конфигурации (например, системное свойство или параметр контекста в web.xml) для ссылки на это.