Когда вы разрабатываете веб-приложение на языке сценариев, у вас есть файл в дереве каталогов вашего проекта, где конфигурации определяются во время развертывания и считываются для инициализации во время выполнения.Ситуация существенно меняется при развертывании вашего веб-приложения в виде скомпилированного файла WAR, поскольку у вас нет доступа ни к какому-либо дереву каталогов, так и к редактированию содержимого архива.
Это мой сценарий: моему приложению требуется smtp.properties
дляотправка электронных писем во время выполнения, поэтому этот файл содержит конфиденциальную информацию, которой я не хочу делиться с другими веб-приложениями.Это означает, что я не буду помещать файл в $CLASSPATH
.Другой вариант - проверка в известном месте, но это имеет очевидные проблемы с переносимостью.Просто назову одно: в Linux у вас есть /etc
, в Windows нет /etc
В настоящее время я читаю настройки с ServletContext.getInitParameter(String)
, но это накладывает ограничение наФормат данных и фактическое место файла зависят от контейнера сервлета.
Итак, мой окончательный ответ: что ближе всего соответствует config.php
(или config.yml
) на земле JavaEE?
Отказ от ответственности : Я прочитал много похожих вопросов, и кажется, что короткий ответ - это никак.Это также обременительно, если вы хотите переопределить параметры для других компонентов во время развертывания (например, ведение журнала)