2015-11-27 6 views
0

Я использую spring-rest для создания некоторых @RestController сервлетов. Приложение не запускается на веб-сервере, а как простой инструмент командной строки со встроенным tomcat.Как запустить @RestController на другом порту?

Большинство из них должно работать на общественном порту, который указан с использованием свойства server.port=80.

Вопрос: как я могу использовать разные @RestController на разных портах? Так что некоторые из них доступны только внутри страны?

@RestController 
@RequestMapping("test") 
public class TestServlet { 

    @RequestMapping(value = "/", method = RequestMethod.GET, produces = MediaType.TEXT_PLAIN_VALUE) 
    @ResponseStatus(HttpStatus.OK) 
    @ResponseBody 
    public String test() { return "OK"; } 
} 

ответ

2

Я бы рекомендовал использовать прокси-сервер. Это может быть веб-сервер Apache или Ngix. Вам необходимо настроить два виртуальных хоста (в разных портах) на веб-сервере. И перенаправить вызов на ваш сервер tomcat. Вы можете загружать свои контроллеры в разные пути, чтобы упростить проксирование вызовов из weberver.

Наконец, ваши клиенты совершают вызов через веб-сервер, а не непосредственно в tomcat.

+0

Ну а это означало бы, что я должен развернуть мое приложение на сервере приложений явным, и не может запустить его больше в качестве инструмента консоли. Если это правда, разве нет альтернативы, придерживающейся встроенного подхода tomcat? – membersound

+0

другой вариант - иметь разные пути контекста, в зависимости от функциональности. После этого вы можете защитить свое приложение, чтобы только нужные люди могли получить доступ к правильному пути. Или вы можете разделить функциональность в двух проектах, один работает в X-порту, а другой в Y-порту. Вы можете положить funcionality в единственную банку, чтобы вы только отредактировали банку, чтобы запустить банку в обоих приложениях tomcat. – reos

0

Если вы на весеннем ботинке, я думаю, вы должны проверить Spring Boot Actuator. Приложение может быть настроено на один порт, а исполнительный механизм отключается от другого.

Вот руководство, которое показывает, как изменить порт для привода - https://spring.io/guides/gs/actuator-service/

+0

Да, я использую 'spring-boot'. Глядя на проект «Привод», я не мог понять, что вы имеете в виду, запустив другой порт. Не могли бы вы привести прямой пример? Насколько я знаю, «привод» предоставляет несколько готовых сервлетов, например, «здоровье», на другом порту. Но, вероятно, не стоит добавлять некоторые пользовательские сервлеты в порт исполнительного механизма, поскольку это служит другой цели. Во всяком случае было бы интересно, как проект привода успешно запускает сервлет на другом порту. Вы знаете? – membersound

+0

В руководстве представлен сегмент, в котором показано, как настроить конечные точки исполнительного механизма для запуска отдельного порта, просто изменив приложение application.properties - https://spring.io/guides/gs/actuator-service/#_switch_to_a_different_server_port – mugua

+0

извините, я думаю, что неправильно понял ваш последний вопрос. Я просто знаю, как активировать привод, а не воссоздавать эту функцию. – mugua

Смежные вопросы