Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сервлет. определить порт, на который пришёл запрос, в теле init() - метода 
:(
    Опции темы
KostenkoSergey
Дата 27.12.2005, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 31.10.2005
Где: Kiev

Репутация: 3
Всего: 8



как можно определить порт, на который пришёл запрос в теле init() - метода сервлета ?
PM ICQ   Вверх
Domestic Cat
Дата 27.12.2005, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 13
Всего: 172



Насколько я понимаю - никак. В доках сказано:
Цитата
The init method must complete successfully before the servlet can receive any requests.

Проще говоря, сначала создается инстанс сервлета, затем вызывается init, после чего сервлет способен обрабатывать реквесты.
Из ServletRequest объекта порт можно получить в методах, где он обрабатывается, в том же service:
http://java.sun.com/products/servlet/2.3/j...getServerPort()


--------------------

PM   Вверх
KostenkoSergey
Дата 27.12.2005, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 31.10.2005
Где: Kiev

Репутация: 3
Всего: 8



Цитата(Domestic @ 27.12.2005, 16:06)
асколько я понимаю - никак

... вот я такое нарыл - а хотелось бы smile
PM ICQ   Вверх
COVD
Дата 27.12.2005, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 4
Всего: 43



А зачем определять? Есть порт, на котором слушает контейнер сервлетов (Томкат, например), и это обычно порт 80 или 8080. Сервлет не работает с портом, реквесты ему передает контейнер сервлетов и ему же он возвращает респонс.

Это сообщение отредактировал(а) COVD - 27.12.2005, 18:13
PM MAIL   Вверх
KostenkoSergey
Дата 27.12.2005, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 31.10.2005
Где: Kiev

Репутация: 3
Всего: 8



у меня на одном хосте запущено два контейнера - в методе инит происходит считывание из файла адреса, куда редеректить запрос дальше (локалхост:8080 - например).
вот собсно ...
PM ICQ   Вверх
COVD
Дата 27.12.2005, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 4
Всего: 43



У сервлета есть методы doPost и doGet, в которые контейнер передает обьекты реквеста и респонса.
Первый обьект(реквест) - это труба, из которой в сервлет поступают параметры запроса.
Второй обьект(респонс) - труба, в которую сервлет должен выбросить свой ответ. Сервлет -это как статический метод.
Таким образом, кто прислал запрос , тот и получит ответ. Это ответственность контейнера вернуть ответ автору запроса.
PM MAIL   Вверх
KostenkoSergey
Дата 27.12.2005, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 31.10.2005
Где: Kiev

Репутация: 3
Всего: 8



я вкурсе smile))) мне важно куды именно будет редиректиться а не кто вернёт ... но то уже офтопик
PM ICQ   Вверх
3,14
Дата 28.12.2005, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1614
Регистрация: 18.6.2004
Где: Н. Новгород

Репутация: 3
Всего: 24



Вобще-то всё просто:

Код

int port = request.getServerPort();


Это сообщение отредактировал(а) 3,14 - 28.12.2005, 10:18


--------------------
Может быть, это только мой бред,
Может быть, жизнь не так хороша,
Может быть, я не выйду на свет,
Но я летал, когда пела душа...
PM MAIL   Вверх
Domestic Cat
Дата 28.12.2005, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 13
Всего: 172



Цитата(3)
int port = request.getServerPort();

Это в теле init метода?


--------------------

PM   Вверх
3,14
Дата 28.12.2005, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1614
Регистрация: 18.6.2004
Где: Н. Новгород

Репутация: 3
Всего: 24



Цитата(Domestic @ 28.12.2005, 11:23)
Это в теле init метода?

Извиняюсь, не обратил внимание что нужно именно в init-е это сделать...


--------------------
Может быть, это только мой бред,
Может быть, жизнь не так хороша,
Может быть, я не выйду на свет,
Но я летал, когда пела душа...
PM MAIL   Вверх
3,14
Дата 28.12.2005, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1614
Регистрация: 18.6.2004
Где: Н. Новгород

Репутация: 3
Всего: 24



Цитата(KostenkoSergey @ 27.12.2005, 15:35)
как можно определить порт, на который пришёл запрос в теле init() - метода сервлета ?

Тогда вопрос не корректный, в init не могут приходить запросы


--------------------
Может быть, это только мой бред,
Может быть, жизнь не так хороша,
Может быть, я не выйду на свет,
Но я летал, когда пела душа...
PM MAIL   Вверх
KostenkoSergey
Дата 28.12.2005, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 31.10.2005
Где: Kiev

Репутация: 3
Всего: 8



Цитата(3)
Тогда вопрос не корректный

- нет, ну Вы посмотрите на него smile))))

Вопрос ему некоректный..... - 3 поста "в тему" сделал... smile

Инит вызывается перед перевым обращением к ДО_*... после обращения к сервлету.

Это сообщение отредактировал(а) KostenkoSergey - 28.12.2005, 16:34
PM ICQ   Вверх
Domestic Cat
Дата 28.12.2005, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 13
Всего: 172



Модератор: Не оффтопить

Вопрос действительно некорректный.


--------------------

PM   Вверх
alexsmirnov
Дата 30.12.2005, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 23.8.2005

Репутация: 5
Всего: 7



Вобще-то, когда и сколько раз вызывается init() - это забота контейнера. Обычно создается pool instance сервлетов, Tomcat 5.5.12 это делает вообще при старте приложения, до каких-либо запросов. И далее из этого пула выбираются экземпляры для обработки. Поэтому, init() может вызваться раз 5 ( или как настроен контейнер ) до каких-либо запросов, если сервер перегружен - по мере поступления запросов пул может расширяться ( и опять будет вызываться init() ). А инициализированный сервлет обрабатывает МНОГО запросов - который из них тебе нужен ? Первый ? Сотый ? Миллионный ?
PM MAIL   Вверх
chief39
Дата 3.1.2006, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 11
Всего: 77



Я так понимаю, вопрос в том, предоставляет ли сервер какое-то АПИ для считывания своих настроек.

Цитата(alexsmirnov @ 30.12.2005, 18:01)
который из них тебе нужен ? Первый ? Сотый ? Миллионный ?

Насколько мне понятна суть проблемы - это не имеет значения - конфигурация сервера всё равно одна. И если уточним порт при каждой инициализации нового сервлета - невелика беда.

Вот только... можно ли это узнать? Каким-то документированным или недокументированным способом?
Вроде бы всё катится к тому, что "нет" smile



--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0550 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.