How to run external war file with embedded tomcat of spring boot with gradle?

2.2k views Asked by At

I am trying to deploy external war file into embedded tomcat of spring boot.I added gradle dependencies in the format of .war file and i want run this war with by spring boot app , but not running please anyone can help me out.

2

There are 2 answers

0
Sumedh Jogdande On BEST ANSWER

Just try with this approach. add this code block in your spring boot application. your war file must be placed in a src/main/resources directory.

@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);
            }
        };

    }

-> change the base directory in the application.properties as

server.tomcat.basedir=temp-server
0
ares On

A few classes have changed in Spring Boot 2 and hence you'll have to do:

@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);
        }
    };
}