如何使用Gradle的Spring Boot的嵌入式Tomcat运行外部战争文件



我试图将外部战争文件部署到Spring Boot的嵌入式tomcat中。我以.war文件的格式添加了Gradle依赖项,我希望使用Spring Boot应用程序进行此战争,但是不运行请任何人都可以帮助我。

只需尝试使用此方法即可。在您的Spring Boot应用程序中添加此代码块。您的战争文件必须放在src/main/resources目录中。

@Bean
    public EmbeddedServletContainerFactory servletContainerFactory() {
        return new TomcatEmbeddedServletContainerFactory() {
            @Override
            protected TomcatEmbeddedServletContainer getTomcatEmbeddedServletContainer(Tomcat tomcat) {
                new File(tomcat.getServer().getCatalinaBase(), "webapps").mkdirs();
                try {
                    tomcat.addWebapp("/cms", new ClassPathResource("cms.war").getFile().toString());
                } catch (Exception ex) {
                    throw new IllegalStateException("Failed to add webapp",ex);
                }
                return super.getTomcatEmbeddedServletContainer(tomcat);
            }
        };
    }

->更改应用程序中的基本目录。

server.tomcat.basedir=temp-server

在Spring Boot 2中有几个类别发生了变化,因此您必须做:

@Bean
public ServletWebServerFactory servletContainer() {
    return new TomcatServletWebServerFactory() {
        protected TomcatWebServer getTomcatWebServer(Tomcat tomcat) {
            new File(tomcat.getServer().getCatalinaBase(), "webapps").mkdirs();
            try {
                tomcat.addWebapp("/cms", new ClassPathResource("cms.war").getFile().toString());
            } catch (Exception ex) {
                throw new IllegalStateException("Failed to add webapp", ex);
            }
            return super.getTomcatWebServer(tomcat);
        }
    };
}

最新更新