Arhn - архитектура программирования

Получить номер порта и имя хоста в приложении Spring на сервере Tomcat

Мое приложение представляет собой веб-приложение на основе Spring framework 3.1.2, развернутое на Apache tomcat 6.

Мне нужно получить работающее приложение номер порта и имя хоста при запуске приложения (сервера). Так что я бы переопределил его для свойства, и это необходимо для инициализации другого компонента.

Предоставляет ли Spring какие-либо параметры для получения этих сведений и установки их при запуске сервера?..

18.12.2012

Ответы:


1

Взгляните на эти два ранее заданных вопроса: Получите номер порта сервера от tomcat без запроса и Мне нужно знать порты HTTP и HTTPS, которые запускает мое веб-приложение Java при запуске веб-приложения. Там вы увидите, как получить порт из соединителя, у соединителя также есть метод getDomain, который даст вам имя хоста.

Поскольку вы знаете, как обойтись без spring, вы можете иметь bean-компонент, который получает эти детали и предоставляет их для другого bean-компонента, которому нужны эти детали инстанцирования. Есть несколько способов сделать это:

1) Создайте фабричный компонент Spring, который получит порт, имя хоста и создаст экземпляр компонента, который вы хотите

2) Имейте отдельный bean-компонент, который содержит эти данные для вас, и вы используете этот bean-компонент для создания другого.

3) Вы переопределяете данные своего приложения с помощью порта и домена, и при создании экземпляра bean-компонента, который в них нуждается, есть метод init, который будет читать их для вашего нового bean-компонента.

18.12.2012

2

Вот код для получения порта и IP-адреса

class IPAddressDemo{
    public static String getIpAddressAndPort1() throws MalformedObjectNameException, NullPointerException,
            UnknownHostException {
        MBeanServer beanServer = ManagementFactory.getPlatformMBeanServer();
        Set<ObjectName> objectNames = beanServer.queryNames(new ObjectName("*:type=Connector,*"),
                Query.match(Query.attr("protocol"), Query.value("HTTP/1.1")));
        String host = InetAddress.getLocalHost().getHostAddress();
        String port = objectNames.iterator().next().getKeyProperty("port");
        String ipadd = "http" + "://" + host + ":" + port;
        System.out.println(ipadd);
        return ipadd;
    }
}
12.08.2016
  • Это идеальное решение, если прокси заменяет реальный номер порта соединителя (настроенный в server.xml), и вам нужно его получить. Большое спасибо!! 07.03.2019

  • 3

    Tomcat будет работать по умолчанию на порту TCP/IP с номером 8080.

    Шаги

    1. Перейдите к C:\apache-tomcat-6.0.18\conf\server.xml (место, где вы установили tomcat)
    2. В файле server.xml найдите Порт коннектора, который выглядит следующим образом.

      <connector port="8080" protocol="HTTP/1.1" connectiontimeout="20000" redirectport="8443">     
      
      </connector>
      

    port в теге Connector — это ваш номер порта.

    Поиск имен хостов:

    Шаги

    1. Navigate to `C:\WINDOWS\system32\drivers\etc` 
    

    Or

    Пуск->Все программы->Выполнить-> введите "драйверы" (без кавычек)->и т.д.

    1. Откройте файлообменник с помощью текстового редактора, и вы можете найти
    127.0.0.1       localhost
    

    Из этого вы можете понять, какое у вас имя хоста.

    Спасибо.

    18.12.2012
  • Мне нужны эти данные (номер порта и имя хоста) во время выполнения (т.е. программно). Не при ручной проверке!. 18.12.2012

  • 4

    Объект ServletRequest, который был передан вашему методу doGet или doPost, имеет методы getServerName() и getServerPort(), предоставляющие эту информацию.

    Пример:

    public void doGet(ServletRequest request, ServletResponse response) {
        System.out.println("Host Name = " + request.getServerName());
        System.out.println("Port Number = " + request.getServerPort());
    }
    
    18.12.2012
  • чувак, ты вообще вопрос читал? этот ответ так же плох, как и ваш первый ... полностью стоит отрицательного голоса. 29.12.2012
  • Вопрос о Spring MVC, а не о сервлетах. 11.06.2015
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..