Перемещение простого веб-сервиса SpringBoot с Tomcat на Liberty не распознает конечную точку - PullRequest
0 голосов
/ 24 апреля 2018

С помощью SpringInitializr я написал простой веб-сервис для распознавания одной конечной точки "/ hello". Когда я собираю .war на Gradle и запускаю его, служба запускается (встроена) в Tomcat и правильно отвечает на URL «localhost: 8080 / hello».

Затем я копирую файл .war в Liberty ... / dropins / и запускаю сервер Liberty; в Liberty server.xml порт по умолчанию - 9080, а не 8080. Когда я нажимаю на URL localhost:9080/hello, я получаю сообщение об ошибке Context Root not Found. Когда я нажимаю на URL localhost:9080/UserSettingController/hello (где имя проекта Java - UserSettingController, я больше не получаю ошибку Context Root not Found, а вместо этого ошибку 404.

Почему Tomcat распознает конечную точку, но не Liberty? Я пропускаю соединение Spring-ish?

Код для проекта:

@SpringBootApplication
public class UserSettingControllerApplication {

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

////////////////////////////////////////////////////////////////////////////////

public class ServletInitializer extends SpringBootServletInitializer {

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

////////////////////////////////////////////////////////////////////////////////

@CrossOrigin
@RestController
public class RESTInterface {

    @RequestMapping(path = "/hello", method = { RequestMethod.GET }, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public String hello() {
        return "Hello, dude!";
    }
}

////////////////////////////////////////////////////////////////////////////////

@Configuration
@EnableWebMvc
@EnableConfigurationProperties
@ComponentScan( { "com.ui.usersetting.restinterface" } )

public class UserSettingControllerConfiguration {}

1 Ответ

0 голосов
/ 24 апреля 2018

Для устранения проблем с Liberty в целом файлы журналов можно найти по адресу $SERVER_CONFIG_DIR/logs/ (для справки, server.xml идет прямо внутрь $SERVER_CONFIG_DIR). Без более подробной информации я не могу дать более конкретного ответа, кроме как попросить вас проверить логи и сообщить, какую ошибку вы видите.

Однако я опробовал ваш код в упакованном весеннем приложении .war, и сервер загрузился нормально, и мне удалось пропинговать конечную точку приветствия на http://localhost:9080/demo-0.0.1-SNAPSHOT/hello Кроме того, я использовал Liberty 18.0.0.1 (последний выпуск GA), так что это тоже могло бы помочь.

Для справки вот сервер.xml, который я использовал:

<server description="new server">

    <!-- Enable features -->
    <featureManager>
        <feature>jsp-2.3</feature>
        <feature>servlet-3.1</feature>
        <feature>jaxrs-2.0</feature>
    </featureManager>

    <!-- To access this server from a remote client add a host attribute to the following element, e.g. host="*" -->
    <httpEndpoint id="defaultHttpEndpoint"
                  httpPort="9080"
                  httpsPort="9443" />

    <!-- Automatically expand WAR files and EAR files -->
    <applicationManager autoExpand="true"/>
</server>

(Единственное, что я изменил в шаблоне server.xml по умолчанию, это добавление функций servlet-3.1 и jaxrs-2.0)

...