Подтвердить что ты не робот

Как обнаружить встроенный порт Jetty после запроса произвольного доступного порта?

Server server = new Server(0);   
(..)
server.start();
// this returns _zero_ ?!?!
int listeningPort = server.getConnectors()[0].getPort();

Я использую встроенный API Jetty 7. Передача нуля в конструктор Server (int) заставляет Jetty автоматически назначать доступный порт, как я могу узнать, какой порт был назначен?

Я прочитал документы, но не могу найти эту информацию.

спасибо..

4b9b3361

Ответ 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