Spring Boot Embedded Tomcat JSPServlet 选项
SpringBoot Embedded Tomcat JSPServlet Options
设置 JSPServlet 的配置选项(如 checkInterval、keepgenerated、modificationTestInterval 等)的首选方法是什么?我试图更改它的原因是 JSP 编译存在一些奇怪的问题。我们正在使用可执行文件 war 打包并将 'server.tomcat.basedir' 属性 设置为指向本地可访问的文件夹。生成的 jsp java 源文件和 class 文件显示修改日期为 1970 年 1 月 14 日。在 windows 资源管理器中,修改仅显示为空。在 linux,我们对所有文件进行了触摸。但是,一旦再次访问 jsp 文件,修改日期就会回到 1970 年。我们怀疑这是导致每次访问 jsp 文件都要编译,从而减慢速度。然而,重新编译似乎只发生在 linux 环境中。有没有人遇到过这个问题?我们的环境:Spring Boot 1.2.2.BUILD-SNAPSHOT,Tomcat 8,JDK 1.8_025。
您可以使用 EmbeddedServletContainerCustomizer
@Bean
查找 JSP servlet 并配置其初始化参数。例如,在您的主要 @Configuration
class:
@Bean
public EmbeddedServletContainerCustomizer customizer() {
return new EmbeddedServletContainerCustomizer() {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
if (container instanceof TomcatEmbeddedServletContainerFactory) {
customizeTomcat((TomcatEmbeddedServletContainerFactory) container);
}
}
private void customizeTomcat(TomcatEmbeddedServletContainerFactory tomcat) {
tomcat.addContextCustomizers(new TomcatContextCustomizer() {
@Override
public void customize(Context context) {
Wrapper jsp = (Wrapper) context.findChild("jsp");
jsp.addInitParameter("modificationTestInterval", "10");
}
});
}
};
}
或者您可以按照此处所述将参数添加到 application.properties 文件中:
https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
寻找:
server.jsp-servlet.init-parameters.*= # 用于配置 JSP servlet
的初始化参数
例如:
server.jsp-servlet.init-parameters.modificationTestInterval=10
设置 JSPServlet 的配置选项(如 checkInterval、keepgenerated、modificationTestInterval 等)的首选方法是什么?我试图更改它的原因是 JSP 编译存在一些奇怪的问题。我们正在使用可执行文件 war 打包并将 'server.tomcat.basedir' 属性 设置为指向本地可访问的文件夹。生成的 jsp java 源文件和 class 文件显示修改日期为 1970 年 1 月 14 日。在 windows 资源管理器中,修改仅显示为空。在 linux,我们对所有文件进行了触摸。但是,一旦再次访问 jsp 文件,修改日期就会回到 1970 年。我们怀疑这是导致每次访问 jsp 文件都要编译,从而减慢速度。然而,重新编译似乎只发生在 linux 环境中。有没有人遇到过这个问题?我们的环境:Spring Boot 1.2.2.BUILD-SNAPSHOT,Tomcat 8,JDK 1.8_025。
您可以使用 EmbeddedServletContainerCustomizer
@Bean
查找 JSP servlet 并配置其初始化参数。例如,在您的主要 @Configuration
class:
@Bean
public EmbeddedServletContainerCustomizer customizer() {
return new EmbeddedServletContainerCustomizer() {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
if (container instanceof TomcatEmbeddedServletContainerFactory) {
customizeTomcat((TomcatEmbeddedServletContainerFactory) container);
}
}
private void customizeTomcat(TomcatEmbeddedServletContainerFactory tomcat) {
tomcat.addContextCustomizers(new TomcatContextCustomizer() {
@Override
public void customize(Context context) {
Wrapper jsp = (Wrapper) context.findChild("jsp");
jsp.addInitParameter("modificationTestInterval", "10");
}
});
}
};
}
或者您可以按照此处所述将参数添加到 application.properties 文件中:
https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
寻找:
server.jsp-servlet.init-parameters.*= # 用于配置 JSP servlet
例如:
server.jsp-servlet.init-parameters.modificationTestInterval=10