Подтвердить что ты не робот

Spring Служба RESTful как WAR вместо JAR в Tomcat

Я создаю веб-службу REST в Java Spring. Я успешно загрузил STS и пример, указанный в:

"В этом руководстве вы познакомитесь с процессом создания веб-сервиса RESTful" hello world "с помощью Spring." http://spring.io/guides/gs/rest-service/

Однако этот учебник до сих пор идет. Я хочу создать WAR файл вместо самозагружаемого jar, содержащего сервлет, и развернуть этот WAR файл. Затем я нашел этот учебник и попытался просто изменить первый файл build.gradle.

"Преобразование приложения загрузки WAR2 в w962 > в WAR" http://spring.io/guides/gs/convert-jar-to-war/

Казалось, что он прекрасно вписывается в файл .war. Служба работает в моем диспетчере экземпляров TOMCAT.. но я получаю 404, когда пытаюсь использовать эту службу.

URL 404'd

http://localhost:8080/gs-rest-service-0.1.0/dbgreeting?name=MyName

Нужно ли модифицировать отображение?

DataBaseController.java

@RequestMapping("/dbgreeting")
    public @ResponseBody DataBaseGreeter dbgreeting(
            @RequestParam(value="name", required=false, defaultValue="World") String name) {
        return new DataBaseGreeter(counter.incrementAndGet(),String.format(template, name));
    }

Теперь у меня есть файл .war, созданный в соответствии с смешением вещей.. и беспокоился, что я, возможно, что-то пропустил.

С тех пор я обнаружил, что XAMPP на OSX не содержит папку webapp/, которая заставила меня загружать стек Bitnami Tomcat. На самом деле люди обычно переключаются между XAMPP и другими стеками? или я пропустил что-то, чтобы получить папку webapp, созданную в XAMPP?

4b9b3361

Ответ 1

WAR - это просто JAR со специальными полномочиями. Он должен иметь WEB-INF, под которым вам нужен web.xml для описания вашего развертывания, любых файлов конфигурации, зависящих от сервера приложений, и, как правило, lib, классов и других коэффициентов и целей.

Самый простой способ - использовать Maven для создания вашей WAR. Я думаю, вы должны просто изменить тип проекта в pom.xml от JAR до WAR. В приведенном ниже учебном руководстве используется Gradle, который, в свою очередь, использует Maven, я считаю, поэтому вы должны где-то там. Кроме этого, google для учебных пособий о том, как построить WAR. Я не верю, что Tomcat требует каких-либо специальных дескрипторов развертывания, поэтому вам понадобится только сеть .xml.

Ответ 2

Я ожидаю увидеть некоторый вывод INFO, когда запускается приложение загрузки spring, поэтому некоторые идеи:

Попробуйте обычный экземпляр tomcat

  • Загрузите и извлеките почтовый дистрибутив.
  • Запустите tomcat с помощью bin/startup.sh
  • Скопируйте свою войну в каталог webapps
  • Проверьте журналы... надеюсь увидеть некоторые доказательства запуска spring

Вручную осмотреть файл войны

  • Распакуйте файл войны
  • Ожидайте увидеть WEB-INF/web.xml

Ответ 3

(Ответ от OP переместился с вопроса на этот вопрос)

Мальчик, я чувствую себя очень глупым. Нашел больше учебника после изменения инструкций gradle, включая очень необходимую автоматическую конфигурацию, которая отменяет/заменяет необходимость в web.xml

Решение

Инициализировать сервлет

Ранее приложение содержало метод public static void main(), который был настроен для запуска spring -boot- gradle -plugin при использовании команды java -jar.

Преобразуя это в WAR файл без XML файлов, вам нужен другой сигнал в контейнер сервлета о том, как запустить приложение.

SRC/Основной/Java/Привет/HelloWebXml.java

package hello;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.SpringBootServletInitializer;

public class HelloWebXml extends SpringBootServletInitializer {

  @Override
  protected void configure(SpringApplicationBuilder application) {
     application.sources(Application.class);
  }

}

Отдадим кредит на первый ответ, но вы оба были правы, что необходим web.xml(или то, что spring -Boot использует для его замены).