如何在Dropwizard中以编程方式获取应用程序端口

tom*_*ekK 8 dropwizard

我使用dropwizard版本0.7.1.它被配置为使用"随机"(ephemeral?)端口(server.applicationConnectors.port = 0).我想在启动后获得正在使用的端口,但我找不到任何有关如何执行此操作的信息.

con*_*dit 8

您可以serverStarted从生命周期监听器获取回调来解决这个问题.

@Override
public void run(ExampleConfiguration configuration, Environment environment) throws Exception {
  environment.lifecycle().addServerLifecycleListener(new ServerLifecycleListener() {
    @Override
    public void serverStarted(Server server) {
      for (Connector connector : server.getConnectors()) {
        if (connector instanceof ServerConnector) {
          ServerConnector serverConnector = (ServerConnector) connector;
          System.out.println(serverConnector.getName() + " " + serverConnector.getLocalPort());
          // Do something useful with serverConnector.getLocalPort()
        }
      }
    }
  });
}
Run Code Online (Sandbox Code Playgroud)