В ASP.NET есть web.config, который может содержать настройки для всего приложения. Существует ли соответствующий файл (находящийся вне архива войны или jar-файла) для сервлета Java EE?
Это web.xml
. Вы можете определить настройки как <context-param>
записей.
<context-param>
<param-name>foo</param-name>
<param-value>bar</param-value>
</context-param>
Доступно по ServletContext#getInitParameter()
. ServletContext
в свою очередь доступен везде.
String foo = getServletContext().getInitParameter("foo"); // Contains "bar"
Вы также можете получить к нему доступ по EL.
#{initParam.foo} <!-- prints "bar" -->
Мне нужно какое-то место, чтобы указать файл конфигурации, который в настоящее время содержит четыре атрибута, которые, в свою очередь, вместе взятые, ведут в базу данных, где хранятся остальные данные и конфигурация. (Сервер, база данных, имя пользователя и пароль.) Эти значения должны легко изменяться без переупаковки и повторного развертывания всего приложения , следовательно, файла конфигурации, но с жестким кодированием пути к файлу конфигурации в приложении (даже если это как константа) кажется далеко не оптимальным.
В соответствии с акцентом, я бы использовал файл properties для этой конкретной цели, который затем помещался бы в путь вне WAR. Вам просто нужно добавить этот путь в путь к классам выполнения Java. Затем вы можете получить его как ресурс classpath:
Properties properties = new Properties();
properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("filename.properties"));
// ...
Однако, с единственной целью обслуживания соединения с БД, вам действительно лучше использовать источник данных, управляемый сервлет-контейнером, как ответил Qwerky. Все, что вам, возможно, потребуется настроить, это просто имя источника данных.