使用 "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 -jar
或 mvn spring-boot:run
在嵌入式服务器上部署应用程序,它可以正常工作。但是,如果我在 Tomcat 7 或 JBoss EAP 6.2 上部署相同的应用程序,我将无法正确加载上下文参数。
- 在不使用 web.xml 文件的情况下,在 Java EE 容器上部署的 Spring 引导应用程序定义上下文参数的正确方法是什么?
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");
}
};
}
我们生成了一个基本的 Spring Boot application 来测试一些功能。
我已经 prepared it 部署在嵌入式服务器和 Java EE 服务器(Tomcat 7 和 JBoss EAP 6.2)上而不应用任何更改。
我已将 server.context-parameters.*
属性 包含在 application.properties 文件中。
如果我使用 java -jar
或 mvn spring-boot:run
在嵌入式服务器上部署应用程序,它可以正常工作。但是,如果我在 Tomcat 7 或 JBoss EAP 6.2 上部署相同的应用程序,我将无法正确加载上下文参数。
- 在不使用 web.xml 文件的情况下,在 Java EE 容器上部署的 Spring 引导应用程序定义上下文参数的正确方法是什么?
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");
}
};
}