0

我正在使用 Spring Boot 构建一个桌面应用程序,它还使用嵌入式 Web 服务器来提供一些生成的文件。有没有办法以编程方式更改 Web 服务器运行的端口?我将允许用户配置他们希望它运行的端口,并且我希望我可以在不让他们重新启动应用程序的桌面部分的情况下进行更改。

我尝试了这个非常幼稚的代码:


    private ServletWebServerApplicationContext webServerAppCtxt;
    private ServerProperties webServerConfig;

    @Override
    public void applyChanges() {
        webServerAppCtxt.getWebServer().stop();
        webServerConfig.setPort(Integer.parseInt(port.getText().trim()));
        webServerAppCtxt.getWebServer().start();
    }

但它没有用。日志刚刚说:

Stopping service [Tomcat]
Tomcat started on port(s): -1 (http) with context path ''

使用 Java 11 / Spring Boot 2.5.2

我还没有拼凑出一些有希望的线索:

  • org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext#createWebServer
  • org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryConfiguration.EmbeddedTomcat#tomcatServletWebServerFactory
  • org.springframework.boot.web.servlet.support.SpringBootServletInitializer#createRootApplicationContext
4

0 回答 0