Получить имя сервера приложений или IP-адрес и порт в Java - PullRequest
6 голосов
/ 01 декабря 2009

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

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

Есть идеи? Я полный нуб Java, извините, если это основной вопрос.

Ответы [ 3 ]

14 голосов
/ 01 декабря 2009

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

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

String hostname = InetAddress.getLocalHost().getHostName();
13 голосов
/ 01 декабря 2009

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

0 голосов
/ 07 декабря 2015

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();
        }
    }
}
...