2013-07-11 4 views
1

Я переношу веб-приложение на Spring 3.2 и наслаждаюсь конфигурацией без веб-браузера. Одна часть, которая остальные устанавливает ключ WebApp корень, который я ранее делал в web.xml, как так:Настройка webapprootkey no-web.xml

<context-param> 
<param-name>webAppRootKey</param-name> 
<param-value>webapproot</param-value> 
</context-param> 

Я знаю, что Spring создает ключ по умолчанию, но в моем случае я бегу несколько версий той же войны и необходимо установить ключ в другое значение в каждом. Поэтому оптимально я хотел бы взять значение из файла свойств и использовать его как корневую.

Я полагаю, что я хотел бы сделать это где-то здесь:

public class WebAppInitializer implements WebApplicationInitializer { 
    private static final Logger logger = Logger.getLogger(WebAppInitializer.class); 

@Override 
public void onStartup(ServletContext servletContext) throws ServletException { 
    // Create the root appcontext 
     AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext(); 
     rootContext.register(AppConfig.class); 

     servletContext.addListener(new WebAppRootListener()); 

    // Manage the lifecycle of the root appcontext 
     servletContext.addListener(new ContextLoaderListener(rootContext)); 
     //servletContext.setInitParameter("defaultHtmlEscape", "true"); 

    // The main Spring MVC servlet. 
     ServletRegistration.Dynamic springapp = servletContext.addServlet(
      "springapp", new DispatcherServlet(rootContext)); 
      springapp.setLoadOnStartup(1); 
     Set<String> mappingConflicts = springapp.addMapping("/"); 
...etc... 

Спасибо всем, кто может дать совет!

ответ

1

Первая часть была проста:

servletContext.setInitParameter("webAppRootKey", getRootKey()); 

и получить, что корневого раздела в этом случае добавляется в файл application.properties по Maven сборки,

private String getRootKey() { 
    Properties prop = new Properties(); 
    ClassLoader loader = Thread.currentThread().getContextClassLoader();   
    InputStream stream = loader.getResourceAsStream("application.properties"); 
    String key=null; 
    try { 
     prop.load(stream); 
     key = prop.getProperty("rootKey"); 
    } catch (Exception e) { 
     throw new RuntimeException("Cannot load webapprootkey", e); 
    } 
    return key; 
} 
+0

вы можете поделиться тем, что в application.properties, у меня есть сценарий, в котором выполняется два webapps, которые создаются из одного и того же самого быстрого запуска и приводят к проблемам, если добавить оба приложения в момент времени на сервере. Вот мой вопрос: http: //stackoverflow.com/q/18543317/1654823, не могли бы вы взглянуть – Venkat

Смежные вопросы