使用 "server.context-parameters.*" 定义的 属性 在 Java EE 服务器上不起作用

Property defined using "server.context-parameters.*" doesn't work on Java EE server

我们生成了一个基本的 Spring Boot application 来测试一些功能。

我已经 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 上部署相同的应用程序,我将无法正确加载上下文参数。

You could see all debugging information related with this Spring Boot issue here

最后,感谢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");
        }
    };
}