如何在 IntelliJ IDE 中为同一应用程序运行多个 Tomcat 服务器

问题描述 投票:0回答:1
  • 我必须在我的 Mac 上运行 12 个 tomcat 服务器实例才能进行 POC。我最初将相同的 SpringBoot 源代码复制到多个目录并在 IntelliJ 中运行它们。
  • 有没有办法用单个应用程序运行所有实例。这可以最大限度地减少差异位置上的代码更改工作和一些手动工作。

在 Mac 上运行 12 个 tomcat 服务器的步骤

准备好一个要在 12 个不同端口上本地运行的 Spring Boot 实例。 转到 IntelliJ 选项 > 运行(编辑配置)Ctrl + Opt + R(Mac 快捷方式) 使用 + 号添加新的 Spring Boot 运行配置,如下所示。 如果您在 IntelliJ 设置中找不到启用显示的功能,请在“VM 选项”中给出差异端口号。

-Dserver.port=8081
这样你就可以运行任意数量的服务器实例(我尝试了 12 个) 逐一启动,您可以使用 diff 端口 ex 调用每个实例。 http://localhost:8081/callDB 这就是您在本地运行许多服务的通用源代码。

enter image description here enter image description here

spring-boot intellij-idea tomcat microservices
1个回答
0
投票

欢迎来到SO! 我认为你可以在这里采取多种不同的方法。

  1. 在 intelliJ 中“一键单击”即可运行所有 12 个进程。 为此,创建“复合”类型的运行/调试配置。您的第一张图片已显示您已定义所有 12 个实例。现在在同一窗口中按“+”,然后选择“复合”。为其命名并一一添加所有实例。然后运行这个复合配置,它将启动所有实例。

  2. 第一种方法仍然意味着您有 12 个 JVM 进程同时运行。如果您只想运行一个暴露 12 个端口的 JVM 应用程序,您可以自定义 spring boot 配置并在 tomcat 中创建 11 个附加连接器(即在某个端口上等待传入连接的组件)。


    @Bean
    public ServletWebServerFactory servletContainer(@Value("${server.port}") int serverPort,
                                                    AdditionalPortConfigProperties conf) {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
        conf.getPorts().forEach(p -> {  // list of integers - ports to be opened
                Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
                connector.setScheme("http");
                connector.setPort(p.getSrcPort());
                // you can customize the protocol if you wish - set max incoming header size, etc.
                // this line adds a connector to your tomcat configuration
                tomcat.addAdditionalTomcatConnectors(connector);
            }
        });
© www.soinside.com 2019 - 2024. All rights reserved.