如何在Spring Boot的嵌入式tomcat服务器中设置unpackwars = true?

时间:2018-06-13 21:48:29

标签: java spring spring-boot tomcat

我有一个使用Spring创建可执行war文件的应用程序。创业很慢(3-6分钟)。我已经阅读了其他帖子,这似乎是Apache Tomcat 8的设置,如果unpackWars=false那么性能很慢(https://bz.apache.org/bugzilla/show_bug.cgi?id=57251https://github.com/spring-projects/spring-boot/issues/5200)。但更改unpackWars=true可以帮助加快速度。但是,这些帖子指的是我无法访问的server.xml文件,因为该项目使用的是嵌入式tomcat服务器。

我首先尝试查看我是否可以在application.properties文件中设置某些设置,但我没有看到serverserver.tomcat以外的任何内容能够使用。

我有一个TomcatConfig类在启动时消耗,我想知道是否有办法将此unpackWars属性设置为true以帮助加快开始时间。我注意到这个课程中发生的事情类似于这里发现的帖子:(https://www.mkyong.com/spring-boot/spring-boot-how-to-change-context-path/

@Slf4j
public class TomcatConfig {

@Value("${httpPort}")
private int port;

@Bean
public TomcatEmbeddedServletContainerFactory tomcatFactory(){
    return new TomcatEmbeddedServletContainerFactory(port);
}

@Bean
public EmbeddedServletContainerCustomizer tomcatCustomizer() throws URISyntaxException, UnknownHostException {
    return new EmbeddedServletContainerCustomizer() {
        @Override
        public void customize(ConfigurableEmbeddedServletContainer container) {
            if(container instanceof TomcatEmbeddedServletContainerFactory){
                TomcatEmbeddedServletContainerFactory containerFactory = (TomcatEmbeddedServletContainerFactory) container;
                configureTomcat(containerFactory);
            }
        }
    };
}

private void configureTomcat(TomcatEmbeddedServletContainerFactory cf) {
    // configure unpackWars here somehow?
}
}

0 个答案:

没有答案