Как обнаружить встроенный порт Jetty после запроса произвольного доступного порта?
Server server = new Server(0);
(..)
server.start();
// this returns _zero_ ?!?!
int listeningPort = server.getConnectors()[0].getPort();
Я использую встроенный API Jetty 7. Передача нуля в конструктор Server (int) заставляет Jetty автоматически назначать доступный порт, как я могу узнать, какой порт был назначен?
Я прочитал документы, но не могу найти эту информацию.
спасибо..
Ответы
Ответ 1
Функция getPort()
возвращает настроенное значение.
Попробуйте server.getConnectors()[0].getLocalPort()
, он должен вернуть выбранный порт.
Для Jetty 9:
Вам нужно использовать ((ServerConnector)server.getConnectors()[0]).getLocalPort()
.
В обоих случаях: сначала нужно вызвать server.start()
.
Ответ 2
Для меня getPort() работал в обоих случаях.
Перед запуском сервера:
((AbstractNetworkConnector) server.getConnectors()[0]).getPort(); -> 8080
((AbstractNetworkConnector) server.getConnectors()[0]).getLocalPort(); -> -1
((AbstractNetworkConnector) server.getConnectors()[0]).getHost(); -> null
После запуска сервера:
((AbstractNetworkConnector) server.getConnectors()[0]).getPort(); -> 8080
((AbstractNetworkConnector) server.getConnectors()[0]).getLocalPort(); -> 8080
((AbstractNetworkConnector) server.getConnectors()[0]).getHost(); -> null