Проект Gradle Spring Boot не работает в Tomcat как WAR

У меня есть простое примерное приложение, написанное в Spring Boot с использованием зависимости Gradle. Он говорит helloworld при вызове localhost: 8080/greetings. Я упаковал его как WAR и развернул на Tomcat как myWebApp.war.

Когда я звоню на localhost:8080/myWebApp/greetings, я получаю 404. Что я должен сделать из приведенного ниже catalina.log

  Sep 17, 2014 1:43:09 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.54
Sep 17, 2014 1:43:09 AM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive D:\C813507\Tomcat7\apache-tomcat-7.0.54\webapps\cftsample.war
Sep 17, 2014 1:43:09 AM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(D:\C813507\Tomcat7\apache-tomcat-7.0.54\webapps\cftsample\WEB-INF\lib\tomcat-embed-core-7.0.54.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/servlet/Servlet.class
Sep 17, 2014 1:43:09 AM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(D:\C813507\Tomcat7\apache-tomcat-7.0.54\webapps\cftsample\WEB-INF\lib\tomcat-embed-el-7.0.54.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/el/Expression.class
Sep 17, 2014 1:43:13 AM org.apache.catalina.util.SessionIdGenerator createSecureRandom
INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [138] milliseconds.
Sep 17, 2014 1:43:13 AM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deployment of web application archive D:\C813507\Tomcat7\apache-tomcat-7.0.54\webapps\cftsample.war has finished in 4,385 ms

person Vinodh Thiagarajan    schedule 17.09.2014    source источник


Ответы (1)


Чтобы запустить приложение Spring Boot в автономном контейнере сервлетов, вам нужно сообщить контейнеру, как запускать приложение. Вы делаете это, расширяя SpringBootServletInitializer и переопределяя метод configure, чтобы предоставить классы конфигурации для вашего приложения. Это описано в руководстве по началу работы по преобразованию jar в war.

Обычно вы получаете такой класс:

@Configuration
@EnableAutoConfiguration
public class Application extends SpringBootServletInitializer {

    // Used when launching as an executable jar or war
    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }

    // Used when deploying to a standalone servlet container
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }
}
person Andy Wilkinson    schedule 17.09.2014
comment
Спасибо, намного понятнее и лаконичнее, чем собственная документация Spring Boot! - person Scott; 06.02.2015
comment
превосходно. Я обнаружил, что у многих людей возникает такая же проблема при первой работе с загрузкой Spring. - person jalpa; 20.12.2015