2012-01-16 8 views
23
Server server = new Server(0); 
(..) 
server.start(); 
// this returns _zero_ ?!?! 
int listeningPort = server.getConnectors()[0].getPort(); 

Uso la API de Jetty 7 integrada. Pasar cero al constructor del Servidor (int) hace que Jetty asigne un puerto disponible automáticamente, ¿cómo puedo descubrir qué puerto fue asignado?¿Cómo descubrir el puerto Jetty integrado después de solicitar un puerto aleatorio disponible?

He leído los documentos, pero no puedo encontrar esta información.

gracias ..

+3

encontrado! Use getLocalPort en lugar de getPort()! – Leo

+1

Esta es una técnica muy útil para probar. –

Respuesta

35

La función getPort() devuelve el valor configurado.

Pruebe server.getConnectors()[0].getLocalPort() debe devolver el puerto seleccionado.

Para embarcadero 9:

Es necesario utilizar ((ServerConnector)server.getConnectors()[0]).getLocalPort().

En ambos casos: primero debe llamar al server.start().

+1

por favor ponga su código usando ctrl + k – Shail

+1

El inicio del servidor es importante. Si intenta obtener el puerto antes de que se ejecute el servidor, se devolverá como '-1'. – knittl

-1

Para mí getPort() funcionó en ambos casos.

Antes de inicio del servidor:

((AbstractNetworkConnector) server.getConnectors()[0]).getPort(); -> 8080 
((AbstractNetworkConnector) server.getConnectors()[0]).getLocalPort(); -> -1 
((AbstractNetworkConnector) server.getConnectors()[0]).getHost(); -> null 

Después de inicio del servidor:

((AbstractNetworkConnector) server.getConnectors()[0]).getPort(); -> 8080 
((AbstractNetworkConnector) server.getConnectors()[0]).getLocalPort(); -> 8080 
((AbstractNetworkConnector) server.getConnectors()[0]).getHost(); -> null