2009-12-01 33 views
6

Nos gustaría identificar y mostrar el servidor y el puerto en el que se ejecuta una aplicación Java que está detrás de un servidor web proxy. Esto significa que getServerName() y getServerPort() devuelven el nombre del servidor del proxy y su puerto (80).Obtener el nombre del servidor de aplicaciones o la ip y el puerto en Java

Tenemos dos instancias de servidor de aplicaciones ejecutándose en un solo cuadro físico y, por lo tanto, tenemos dos puertos activos por caja, es decir, 9080, 9081. Lo que me gustaría tener es <Application Server Name>:<Application Server Port>.

¿Alguna idea? Soy un novato de Java completo, lo siento si esta es una pregunta básica.

Respuesta

12

Puede utilizar los métodos ServletRequest#getLocalXXX() para esto.

+0

Esto y una combinación de la respuesta de rsp a continuación. getLocalName proporciona la dirección IP. InetAddress.getLocalHost.getHostName me da el nombre del servidor. getLocalPort proporciona el número de puerto correcto. ¡Genial gracias! –

+0

De nada. Sin embargo, es interesante que 'getLocalName()' no haya devuelto el nombre de host. – BalusC

+0

Me pregunto si el problema se debe a que la aplicación está detrás de IIS como proxy y IIS dirige al servidor de aplicaciones a través de la dirección IP. –

13

El nombre de host del servidor es parte de la solicitud, ya que depende de qué URL utilizó el cliente para llegar a su host. El valor que obtienes de esta manera se define en el cliente y no tiene que ser lo que esperas.

Si usted está interesado en el nombre del ordenador local, puede intentar:

String hostname = InetAddress.getLocalHost().getHostName(); 
0

Crunchify proporciona un buen ejemplo de esto.

import java.net.InetAddress; 
import java.net.UnknownHostException; 

public class CrunchifyGetIPHostname { 

    public static void main(String[] args) { 

     InetAddress ip; 
     String hostname; 
     try { 
      ip = InetAddress.getLocalHost(); 
      hostname = ip.getHostName(); 
      System.out.println("Your current IP address : " + ip); 
      System.out.println("Your current Hostname : " + hostname); 

     } catch (UnknownHostException e) { 

      e.printStackTrace(); 
     } 
    } 
} 
+1

La solución citada no obtiene el número de puerto. – ibelcomputing

Cuestiones relacionadas