一尘不染

SpringBoot嵌入式Tomcat JSPServlet选项

jsp

设置JSPServlet的配置选项(如checkInterval,keepgeneration,modificationTestInterval等)的首选方法是什么?我尝试更改它的原因是由于JSP编译存在一些奇怪的问题。我们正在使用可执行的war包装,并将’server.tomcat.basedir’属性设置为指向本地可访问的文件夹。生成的jsp
java源文件和类文件显示的修改日期为1970年1月14日。在Windows资源管理器中,修改仅显示为空。在linux上,我们触摸了所有文件。但是,只要再次访问jsp文件,修改日期就可以追溯到1970年。我们怀疑这是否导致每次访问jsp文件时都要对其进行编译,从而减慢了速度。但是,重新编译似乎只发生在linux环境中。有没有人遇到这个问题?我们的环境:Spring
Boot 1.2.2.BUILD-SNAPSHOT,Tomcat 8,JDK 1.8_025。


阅读 285

收藏
2020-06-10

共1个答案

一尘不染

您可以使用EmbeddedServletContainerCustomizer @Bean来查找JSP
servlet并配置其init参数。例如,在您的主@Configuration类中:

@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");
                }
            });
        }
    };
}
2020-06-10