набор инструментов Spring не может развернуть пример веб-сервиса на tomcat

У меня есть некоторый опыт работы с EJB и JBoss, и я знаю основы веб-сервисов, но я новичок в Spring.

Поэтому я попытался развернуть пример проекта Spring WS gs-rest-service-complete без каких-либо изменений. Он работает в Spring Boot, но я не могу развернуть и получить к нему доступ на внешнем сервере Tomcat.

Вот что я сделал: я установил Spring Tool Suite Version: 3.6.4.RELEASE и Apache Tomcat 8.0.24 и определил Tomcat как новый сервер в Spring Tool Suite. Кажется, это работает, потому что я могу развернуть (и получить доступ) пример проекта Spring MVC, и я могу развернуть другой (не пример Spring) веб-сервис на Tomcat.

Однако я не могу развернуть проект gs-rest-service-complete. Я изменил упаковку в pom.xml на «войну», но это не помогло. Любые подсказки, что я мог сделать?

Спасибо, кадута


person Caduta    schedule 19.07.2015    source источник


Ответы (1)


Наконец я нашел ответ внизу этого сайта: https://spring.io/blog/2014/03/07/deploying-spring-boot-applications

Мне нужно было сделать три шага, чтобы запустить его:

  • изменить упаковку на войну в pom.xml.
  • закомментируйте объявление плагина spring-boot-maven-plugin в pom.xml.
  • измените класс приложения, чтобы он наследовал от SpringBootServletInitializer, и переопределите метод configure. Это необходимо для регистрации приложения в tomcat.

Теперь класс Application выглядит так:

    package hello;

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 
    import org.springframework.boot.builder.SpringApplicationBuilder; 
    import org.springframework.boot.context.web.SpringBootServletInitializer;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;

    @Configuration
    @ComponentScan
    @EnableAutoConfiguration
    public class Application extends SpringBootServletInitializer {


    private static Class<Application> applicationClass = Application.class;

    public static void main(String[] args) {
        SpringApplication.run(applicationClass, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(applicationClass);
    }
    }
person Caduta    schedule 28.07.2015