![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| twin84 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 28.9.2006 Репутация: нет Всего: нет |
Есть ServletContextListener.
Можно ли и, если можно, то как в нем получить имя хоста? Т.е. если к сервлету будут идти обращения типа: http://aaa.bbb.ccc/ddd получить aaa.bbb.ccc ??? |
|||
|
||||
| Stampede |
|
||||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 66 Всего: 144 |
Похоже что нельзя. По крайней мере судя по докам из Servlet API. И этому есть хорошая причина. Дело в том, что один и тот же ресурс может быть доступен через разные домены. Классический пример: если у нас есть есть сайт с доменным именем puplin.com, мы можем захотеть, чтобы к нему можно было также обратиться через www.pupkin.com (почему - это отдельный вопрос). Для этой цели разные контейнеры предусматриваеют возможность прописания алиаса(ов) в том или ином виде. Например, в Томкате это будет выглядеть так:
Отсюда вывод: поскольку нет гарантии взаимно-однозначного соответствия между экземпляром веб-приложения и именем хоста, под которым оно будет доступно, то даже если каким-то образом удастся получить имя хоста на этапе инициализации приложения (например, используя контейнер-специфические методы), то это в общем случае мало чего дает, ибо при обслуживании реальных запросов вполне может оказаться, что юзер пришел по адресу, который не совпадает с дефолтным именем хоста.
Блин, минутное затмение нашло. Конечно, метод getServerName() (kkorsakoff, спасибо за поправку). А проблемы c ним действительно возникали в каких-то нештатных ситуациях (уж не помню, в каких версиях). И самым надежным средством получить именно то имя хоста, которое шло из браузера - было смотреть на заголовок Host: request.getHeader("Host"); Это сообщение отредактировал(а) Stampede - 28.9.2006, 22:12 -------------------- "If you want something done right, do it yourself" По секрету: выучить английский - реально! |
||||
|
|||||
| kkorsakoff |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.10.2005 Где: Санкт-Петербург Репутация: 6 Всего: 14 |
Всмысле getServerName()?
Хм....всегда работал нормально, выдавал имя хоста. А через ServletContext достать им хоста невозможно именно по причинам, которые указал Stampede. Но если очень надо и сервер - Tomcat, можно поиграть с MBeans. Можно получить конфиг Host'a и оттуда взять домен и все альясы. |
|||
|
||||
| y3u |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 9.9.2006 Где: Москва Репутация: 7 Всего: 13 |
-------------------- В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 16 Всего: 151 |
Может, стоит просто запихать имя домена в параметры инициализации? Оно ведь навряд ли будет часто меняться.
Это сообщение отредактировал(а) batigoal - 29.9.2006, 12:09 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 66 Всего: 144 |
||||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |