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