SpringBootApplication не работает в полной версии tomcat

106
31 декабря 2020, 19:30

выполняю первый guide с сайта Spring: "Building a RESTful Web Service" с https://spring.io/guides/gs/rest-service/#scratch

Делал в IntelliJ IDEA (это мое первое знакомство с Spring и Idea). Успешно все запускается и работает на встроенном tomcat, так же успешно запускается исполняемый jar файл, но на шаге когда сделал war файл, выложил его в tomcat/webbapps/ - томкат этот файлик распаковал, но когда пытаюсь зайти на http://localhost:8080/greeting выдается ошибка 404. Единственное что я заметил из того что мне знакомо - нет файла web.xml в папке WEB-INF.

По гайду я выполнил все инструкции(92.1 Create a Deployable War File): в pom.xml добавлено

<packaging>war</packaging>

и

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
</dependency>

далее класс Application изменил как требовалось:

@SpringBootApplication
public class Application extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

И собственно war файл создавал в командной строке командой mvn clean package. Что надо сделать чтобы работало на отдельном сервере Tomcat?

Answer 1

Для того что бы создать war-файл вам потребуется Spring Boot Maven Plugin.(в вашем guide он добавлен в pom).

Далее создаете новую 'Run/Debug Configuration' для 'Maven':

  1. Указываем директорию проекта.
  2. Для командной строки указываем 'war:war'
  3. Указываем что перед запуском необходимо собрать проект.

Естественно в pom должно быть указано:

<packaging>war</packaging>

После запуска данной конфигурации в директории проекта должен быть создан war-файл вида artifactId-version.war

Answer 2

Проверять нужно не адресом http://localhost:8080/greeting , а http://localhost:8080/*webbapp_name*/greeting. В данном случае http://localhost:8080/gs-rest-service-0.1.0/greeting Спасибо ermak0ff

READ ALSO
Передать команду в jsp форме JAVA

Передать команду в jsp форме JAVA

Из заполненой jsp формы, данные передаются на сервер и формируется строка запроса:site/cmd?name=John&surname=Doe&passport=AB123456&phone=098-765-4321&account=1234567890

139
Spring Boot AJAX

Spring Boot AJAX

Делаю небольшой проект на Spring BootПередаю в контроллер дату, сервис считает кол-во дней между ними и отдает json

113
Проблемма при построение Dagger2

Проблемма при построение Dagger2

Пытаюсь ставить clean architor

127
Сделать кнопку не активной, если выбран первый элемент

Сделать кнопку не активной, если выбран первый элемент

Необходимо сделать кнопку "создать" не активной в том случае, если выбрано одно из двух значений “Выбрать месяц”/“Выбрать год” или выбрано...

128