我们可以在不同的端口上运行Spring REST API吗?

时间:2018-10-04 07:50:41

标签: java spring spring-mvc

我有一个带有两个控制器的Spring应用程序。我想在localhost:8080上运行一个控制器,在localhost:8081上运行第二个控制器。

我是否可以将Tomcat配置为同时服务两个端口,即80808081?可能吗?怎么样?

请注意,它不是Spring Boot应用程序。

8 个答案:

答案 0 :(得分:2)

听起来像两个完全不同的应用程序

您当然可以将Tomcat的server.xml文件配置为在不同端口上运行多个HTTP connectors。但是,您会发现处理两个不同的Tomcat实例更加容易和轻松。

答案 1 :(得分:0)

不。 spring在特定的端口上运行,它将是两个其余控制器的端口。不过,您可以为它们使用不同的URL。

答案 2 :(得分:0)

不可能。

  

Spring MVC和许多其他Web框架一样,都是围绕前端设计的   控制器模式,其中有一个中央Servlet,DispatcherServlet,   提供了用于请求处理的共享算法,而实际工作   由可配置的委托组件执行。

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

答案 3 :(得分:0)

Spring本身不在任何端口上运行。这只是一种创建API的技术。端口与服务器绑定(例如Tomcat,JBoss等)。因此,如果要将不同的端口用于不同的控制器,则需要在多个服务器上部署多个应用程序,并使这些服务器侦听不同的端口。

答案 4 :(得分:0)

在应该位于8081上的应用程序上,在application.properties文件中添加以下行:

  • server.port = 8081

然后只需运行它们两个...

否则,在TomcatConfiguration中将端口设置为8081,然后再次运行它们。

答案 5 :(得分:0)

您可以在下面的链接中找到完美的例子。他们为不同的资源使用不同的端口。它在春季启动时使用端口绑定和嵌入式tomcat。希望这对您有所帮助。

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

答案 6 :(得分:0)

是的,可以,但是它们的行为就像两个独立的应用程序,并且彼此独立。但是,他们可以共享公用资源,例如数据库,密码目录等。 但是对于这样的用例,我建议研究微服务。 Read more about microservices here

答案 7 :(得分:0)

App Server(Tomcat,JBoss,Glassfish)在/监视一个端口上运行。因此,您可以在具有不同端口号的单个节点(计算机)上运行多个应用程序服务器。它们可以相同(Tomcat + Tomcat),也可以不同(Tomcat + Glassfish)

但是在这种情况下,您需要将控制器分为2个不同的应用程序并将它们部署在应用程序服务器实例上。

这是MicroServices体系结构设计风格。当您为每个服务运行单独的应用程序服务器时。在大多数情况下,微服务服务使用REST over HTTP相互通信。

但是对于Tomcat(可能不是所有产品),可能是:Running Tomcat server on two different ports