Spring Boot API успешно развернут, но при достижении конечной точки он возвращает 404 - PullRequest
1 голос
/ 15 января 2020

Я развернул SpringBoot API на Cloudfoun dry PAAS, хотя нажатие того же API на localhost возвращает желаемый результат. Насколько я понимаю, конечная точка API существует, но контроллер Spring Boot недоступен.

enter image description here

<!doctype html><html lang="en"><head><title>HTTP Status 404 – Not Found</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 404 – Not Found</h1></body></html>

Сборка и развертывание прошли успешно (пробовал через Дженкинс и используя инструмент командной строки cf)

**Controller Code**
@RestController
@Validated
@RequestMapping("/someContext/v1")
public class PController {



    @GetMapping(value = "/pro")
    @RequestLogger
    @ApiOperation(value = "Get  Details", notes = "This operation is for retrieving  details.",produces=MediaType.APPLICATION_JSON) 
    public @ResponseBody ResponseP getDetails(
    .
    .
    .

Маршрут: https://dc-cprobsdev.np3a.paas.bip.uk.xxx-intl.com/

Попадание на маршрут с / без контекста root возвращает тот же результат 404.

1 Ответ

2 голосов
/ 15 января 2020

Я нашел то, чего не хватало. Я добавил этот класс параллельно классу @SpringBootApplication с именем BusinessApplication

public class ServletInitializerBusinessApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(
            SpringApplicationBuilder application) {
        return application.sources(**BusinessApplication**.class);
    }

}

Вопрос: Почему это требуется?

Ответ : SpringBootServletInitializer - это интерфейс для запуска SpringApplication из традиционного развертывания WAR. Он связывает бины Servlet, Filter и ServletContextInitializer из контекста приложения на сервер.

В настоящее время мы обычно разворачиваем приложения SpringBoot с JAR, но в случае необходимости развертывания WAR требуется SpringBootServletInitializer.

Следующие ссылки помогут разобраться в проблеме подробнее

  1. http://zetcode.com/springboot/springbootservletinitializer/

  2. https://www.baeldung.com/spring-boot-servlet-initializer

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...