我正在使用dropwizard版本0.7.1。它被配置为使用“随机”(临时?)端口(server.applicationConnectors.port = 0)。我想获得启动后真正使用的端口,但找不到任何信息来实现该目的。

最佳答案

您可以从生命周期监听器获取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()
        }
      }
    }
  });
}

关于dropwizard - 如何在Dropwizard中以编程方式获取应用程序端口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25542050/

10-12 02:34