2009-12-01 4 views
6

Мы хотели бы идентифицировать и отобразить сервер и порт, на которых работает Java-приложение, расположенное за прокси-сервером. Это означает, что getServerName() и getServerPort() возвращают имя сервера прокси и его порт (80).Получить имя сервера приложений или ip и порт в Java

У нас есть два экземпляра сервера приложений, работающих на одном физическом поле, и поэтому они имеют два активных порта в поле, то есть 9080, 9081. То, что я хотел бы иметь, - <Application Server Name>:<Application Server Port>.

Любые идеи? Я полный Java noob, извините, если это основной вопрос.

ответ

12

Для этого вы можете использовать ServletRequest#getLocalXXX().

+0

Это и комбинация ответа rsp ниже. getLocalName предоставляет IP-адрес. InetAddress.getLocalHost.getHostName дает мне имя сервера. getLocalPort предоставляет правильный номер порта. Удивительно, спасибо! –

+0

Добро пожаловать. Интересно, что 'getLocalName()' не выдавал имя хоста. – BalusC

+0

Интересно, проблема в том, что приложение находится за IIS в качестве прокси, а IIS направляет сервер приложений через IP-адрес. –

13

Имя хоста сервера является частью запроса, так как это зависит от того, какой URL-адрес клиент использовал для вашего хоста. Значение, которое вы получаете таким образом, определяется на клиенте и не обязательно должно быть тем, что вы ожидаете.

Если вы заинтересованы в локальном имени хоста, вы можете попробовать:

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

Crunchify обеспечивает хороший пример для этого.

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

Запрашиваемое решение не получает номер порта. – ibelcomputing

Смежные вопросы