Можем ли мы запустить Spring REST API на разных портах? - PullRequest
0 голосов
/ 04 октября 2018

У меня есть приложение Spring с двумя контроллерами.Я хочу запустить один контроллер на localhost:8080 и второй контроллер на localhost:8081.

Могу ли я настроить Tomcat для одновременного обслуживания двух портов, то есть 8080 и 8081?Является ли это возможным?Как?

Обратите внимание, что это не приложение Spring Boot.

Ответы [ 8 ]

0 голосов
/ 04 октября 2018

Сервер приложений (Tomcat, JBoss, Glassfish) работает на / смотрит один порт.По этой причине вы можете запустить несколько серверов приложений на одном узле (компьютере) с разными номерами портов.Они могут быть одинаковыми (Tomcat + Tomcat) или разными (Tomcat + Glassfish)

Но в этом случае вам нужно разделить контроллеры на 2 разных приложения и развернуть их на экземплярах сервера приложений.

Это стиль архитектурного дизайна MicroServices.Когда вы запускаете отдельный сервер приложений для каждой службы.Сервисы микросервисов в большинстве случаев используют REST по HTTP для связи друг с другом.

Но в случае Tomcat (возможно, не всеми продуктами) это возможно: Запуск сервера Tomcat на двух разных портах

0 голосов
/ 04 октября 2018

Вы можете найти идеальный пример в ссылке ниже.Они используют разные порты для разных ресурсов.Он использует привязку порта со встроенным tomcat в весенней загрузке.Надеюсь, это поможет вам.

https://tech.asimio.net/2016/12/15/Configuring-Tomcat-to-Listen-on-Multiple-ports-using-Spring-Boot.html

0 голосов
/ 04 октября 2018

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

0 голосов
/ 04 октября 2018

В приложении, которое должно быть на 8081, в файле application.properties добавьте следующую строку:

  • server.port = 8081

Затем просто запустите обаиз них ...

В противном случае в TomcatConfiguration установите для порта значение 8081 и снова запустите их оба.

0 голосов
/ 04 октября 2018

Звучит как два совершенно разных приложения .

Вы, безусловно, можете настроить файл server.xml вашего Tomcat так, чтобы несколько HTTP-коннекторов работали на разных портах.Но вам будет гораздо проще и проще справляться с двумя разными экземплярами Tomcat.

0 голосов
/ 04 октября 2018

Сама Spring не работает ни на одном порту.Это просто технология для создания API.Порт связывается с сервером (например, Tomcat, JBoss и т. Д.).Поэтому, если вы хотите использовать разные порты для разных контроллеров, вам нужно развернуть несколько приложений на нескольких серверах и заставить эти серверы прослушивать разные порты.

0 голосов
/ 04 октября 2018

Это невозможно.

Spring MVC, как и многие другие веб-фреймворки, разработан на основе шаблона фронт-контроллера, где центральный сервлет, DispatcherServlet, предоставляет общий алгоритм для обработки запросов, в то время как фактическийработа выполняется настраиваемыми компонентами делегатов.

https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html

0 голосов
/ 04 октября 2018

Нет.Spring работает на определенном порту, и это будет порт для обоих остальных контроллеров.Вы можете иметь разные URL для них.

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