如何在春季启动时将2个不同的jar中的2个微服务部署到同一个端口

时间:2018-05-02 03:02:54

标签: java spring spring-boot

我是Spring Boot的新手。 我已经在一些服务器中将微服务部署到端口80。此服务的URL模式为“/ test”。

然后我将不得不在同一个服务器中将另一个微服务部署到同一个端口。它的URL模式是来自另一个不同jar的'/ test2'。

是否可以部署2个不同的jar,指向同一个端口的2个不同的URL?

3 个答案:

答案 0 :(得分:1)

让第三个微服务作为另外两个的代理。根据请求内容,上下文,URL模式或适合您特定应用程序的任何内容向他们转发请求。

答案 1 :(得分:0)

  

如果您有两者的代码,

不需要代码,只需包含类名(通过扫描罐子或询问开发团队) 可以创建一个新的main方法来扫描所有包并将它们添加到上下文中。然后启动该方法。我认为它将扫描类路径中的所有罐子。因此,即使你的新main方法在一个jar中,它也会扫描另一个jar中的类。那种方式不必重新装到一个罐子里。

这是保留一个JVM和一个端口的一种方法。

Timir建议的代理方法也很好。我将建议使用Nginx或apache web服务器进行组合,而不是Java微服务,如果系统与Web服务器相同,则在不同系统或不同端口运行两个Java进程。

答案 2 :(得分:0)

有两种不同的方法可以做到这一点:

1,已经提到的在服务前使用代理的方式,因此用户认为他们正在运行相同的端口,但实际上并非如此。 Nginx有一个漂亮的代理功能,Netflix的Eureka也是20%。

  1. 将两个Spring应用程序构建为.war文件,并将它们部署到应用程序服务器,如(非嵌入式)Tomcat。 There’s a good blog article on how to generate a .war and deploy it to a standalone Tomcat

  2. 将两个服务放在单独的Docker容器中。 (但你仍然需要向外界展示不同的端口,所以这个答案有点作弊。

  3. 选项2可能是最接近的,你仍然在Javaland ......但它不是2018年在Spring Boot土地上部署东西的时髦新方法。