2015-12-21 18 views
1

我們生成了一個基本的Spring Boot application以測試某些功能。使用「server.context-parameters。*」定義的屬性在Java EE服務器上不起作用

我已經將prepared it部署在嵌入式服務器和Java EE服務器(Tomcat 7和JBoss EAP 6.2)上,無需應用任何更改。

我已包含server.context-parameters.*屬性application.properties文件。

如果我在使用java -jarmvn spring-boot:run的嵌入式服務器上部署應用程序,它的工作沒有問題。但是,如果我在Tomcat 7或JBoss EAP 6.2上部署相同的應用程序,我無法正確加載上下文參數。

  • 這是定義部署在Java EE容器不使用的web.xml文件在春季啓動應用程序上下文參數的正確方法是什麼?

你可以看到今年春季啓動問題相關here

+1

我已經回答了關於彈簧啓動問題的第一個問題(我認爲)。至於第二個問題,你是否試過在你的應用中定義一個類型爲'ServletContextInitializer'的bean? –

+0

感謝您的支持!我嘗試了'SpringBootServletInitializer'中的'onStartup'方法......但是這個解決方案在嵌入式服務器上不起作用。我將爲最終解決方案添加一個答案。最好的祝福。 – jcgarcia

回答

4

最後所有調試信息,我發現下面的解決方案由於Stéphane Nicoll

server.context-parameters.*僅適用於嵌入式服務器,所以需要在Java EE服務器上配置上下文參數,以包含ServletContextInitializer類型的@Bean,如下所示:

@Bean 
public ServletContextInitializer contextInitializer() { 
    return new ServletContextInitializer() { 

     @Override 
     public void onStartup(ServletContext servletContext) 
       throws ServletException { 
       servletContext.setInitParameter("dummy.type","on-context-parameters"); 
     } 
    }; 
} 
相關問題