【问题标题】:SpringBoot Embedded Tomcat JSPServlet OptionsSpring Boot 嵌入式 Tomcat JSP Servlet 选项
【发布时间】:2015-03-04 19:37:37
【问题描述】:

设置 JSPServlet 的配置选项(如 checkInterval、keepgenerated、modificationTestInterval 等)的首选方法是什么?我试图改变它的原因是因为 JSP 编译存在一些奇怪的问题。我们正在使用可执行的战争打包并将“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。

【问题讨论】:

    标签: jsp spring-boot embedded-tomcat-8


    【解决方案1】:

    或者您可以将参数添加到您的 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
    

    【讨论】:

    • 你还需要server.jsp-servlet.init-parameters.development=true
    【解决方案2】:

    您可以使用EmbeddedServletContainerCustomizer @Bean 来查找JSP servlet 并配置其初始化参数。例如,在您的主要 @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");
                    }
                });
            }
        };
    }
    

    【讨论】:

    • 如果能将这些 jsp 配置作为属性公开就好了。 Tomcat 有一些推荐的生产设置配置 (tomcat.apache.org/tomcat-8.0-doc/…),这与默认设置不同。所以我想这将是大多数使用 jsps 和 Tomcat 的应用程序需要的东西
    • 我也可以使用这种方法将 HTML 文件映射到 JSP - jsp.addMapping("*.html");虽然我很欣赏这听起来像是不好的做法:(
    猜你喜欢
    • 1970-01-01
    • 2017-09-20
    • 2018-05-28
    • 2016-02-18
    • 2017-03-12
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 2014-09-19
    相关资源
    最近更新 更多