Я видел много плохих способов, которыми люди конфигурируют в веб-приложениях, что либо делает их неконфигурированными (вы должны выполнять повторное развертывание / выпуск при изменении конфигурации), либо у вас очень мало гибкости.
Как я подхожу к этой проблеме, это использую Spring для заполнителя свойства , но часто вам нужно загружать Spring или что-то еще из стека MVC перед его загрузкой со свойством, которое говорит, куда загружать config. Я использую слушателя для этого:
package com.evocatus.util;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class SimpleContextListenerConfig /*extend ResourceBundle */ implements ServletContextListener{
private ServletContext servletContext;
@Override
public void contextInitialized(ServletContextEvent sce) {
servletContext = sce.getServletContext();
servletContext.setAttribute(getClass().getCanonicalName(), this);
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
}
public static String getProperty(ServletContext sc, String propName, String defaultValue) {
SimpleContextListenerConfig config = getConfig(sc);
return config.getProperty(propName, defaultValue);
}
public static SimpleContextListenerConfig getConfig(ServletContext sc) {
SimpleContextListenerConfig config =
(SimpleContextListenerConfig) sc.getAttribute(SimpleContextListenerConfig.class.getCanonicalName());
return config;
}
public String getProperty(String propName, String defaultValue)
{
/*
* TODO cache properties
*/
String property = null;
if (property == null)
property = servletContext.getInitParameter(propName);
if (property == null)
System.getProperty(propName, null);
//TODO Get From resource bundle
if (property == null)
property = defaultValue;
return property;
}
}
https://gist.github.com/1083089
Свойства будут извлекаться сначала из контекста сервлета, а затем из системных свойств, что позволяет вам переопределять определенные веб-приложения.
Вы можете изменить конфигурацию веб-приложения Certian, либо изменив файл web.xml (не рекомендуется), либо , создав файл context.xml
.
Вы можете использовать статические методы для получения конфигурации:
public static SimpleContextListenerConfig getConfig(ServletContext sc);