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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как взять инстанс сервлета? 
:(
    Опции темы
Zandr
Дата 31.8.2005, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



По некоторым пунктам могу оказаться не прав, поправьте, если что...

1) Если есть параметр, то гибче его указывать как env-entry, чем как init-param.
2) Глобальных env-entry как я понял не существует. Или существуют?
3) Для каждого сервлета создается только один инстанс (либо при старте приложения либо при запросе).

Т.к. у меня есть параметры которые одинаковы для всех сервлетов - не проще ли сделать сервлеткоторый будет эти параметры отдавать другим? И как из одного сервлета получить указатель на другой? Вот.

Если есть другие способы изменять параметр во время работы приложения, причем такие, чтобы параметр указывался только в одном месте - буду рад услышать...
PM MAIL   Вверх
Stampede
Дата 1.9.2005, 01:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



Цитата(Zandr @ 31.8.2005, 10:59)
Т.к. у меня есть параметры которые одинаковы для всех сервлетов - не проще ли сделать сервлеткоторый будет эти параметры отдавать другим?


Не страдай: сделай синглтон и храни в нем все глобальные переменные. Инстанциировать и нициализировать синглтон можно разными способами: через реализацию ServletContextListener или, скажем, через метод init() сервлета с параметром load-on-startup=1. Последнее - проще.


Цитата(Zandr @ 31.8.2005, 10:59)
И как из одного сервлета получить указатель на другой?


Не надо этого делать. Поскольку, согласно спека, код сервлета может исполняться из конкурентных тредов, то хранить какое бы то ни было состояние в объекте сервлета (то бишь в классовых переменных) - чревато. Если это константы - храни как статические переменные со статическими геттерами/сеттерами. Если динамически изменяющаяся информация, то или в синглтоне, либо опять же в статических переменных, но не забывай синхронизировать код доступа. А вообще лучше продумать какой-нибудь синхронизационный фреймворк - сон потом будет лучше smile

Цитата(Zandr @ 31.8.2005, 10:59)
Если есть другие способы изменять параметр во время работы приложения, причем такие, чтобы параметр указывался только в одном месте - буду рад услышать


Таким способом, похоже, должен был стать ServletContext с его методами getAttribute() и setAttribute(), но уж больно им неудобно пользоваться из-за безтиповости параметров. Поэтому я предпочитаю синглтоны. И контроля больше, опять же smile




--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
Zandr
Дата 1.9.2005, 06:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ок, пасиба smile

Это сообщение отредактировал(а) Zandr - 1.9.2005, 06:39
PM MAIL   Вверх
batigoal
Дата 1.9.2005, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


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

Репутация: 16
Всего: 151



Цитата(Stampede @ 1.9.2005, 02:41)
Не страдай: сделай синглтон и храни в нем все глобальные переменные.

А я слышал, это не очень хороший подход - делать этакий мегаСинглтон. Только не помню, почему.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Stampede
Дата 1.9.2005, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



Цитата(Lamer @ 1.9.2005, 08:08)
А я слышал, это не очень хороший подход - делать этакий мегаСинглтон


Ну да, не очень. Потому что в случае кластерного сервера получится некузяво. Поэтому завязываться на синглтон можно только если есть железная уверенность, что приложение никогда не будет работать на нескольких машинах, а иначе потом может быть мучительно больно в области попы smile Но во многих случаях можно спокойно принять такое допущение.

По большому счету, это даже не столько вопрос синглтон-не синглтон. Если действительно есть подозрение, что понадобится распределенная обработка, то там вылезает сразу целая куча нетривиальных архитектурных вопросов, и их лучше с самого начала решить правильно. Причем таких вопросов, что мне сразу немедленно плохеет, как только я начинаю об этом думать. Поэтому я склоняюсь к мысли, что до известных пределов приложение лучше масштабировать путем наращивания компьютерной мощИ плюс возможно выделением отдельных машин под БД, сервер приложения и веб сервер. Плюс за счет оптимизации базы данных, настройки запросов, кэширования датабазных объектов.

Но только не заставляйте меня впутываться в EJB - я лучше сразу пойду прыгну с паровоза.

ЗЫ. Кстати, вся концепуия Spring'а основана на идее, что приложение будет сугубо локальным. И ничего, жив еще курилка smile

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


Эксперт
***


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

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



Цитата
Поэтому я склоняюсь к мысли, что до известных пределов приложение лучше масштабировать путем наращивания компьютерной мощИ плюс возможно выделением отдельных машин под БД, сервер приложения и веб сервер.


Я тоже об этом думал, но на одном форуме на меня цыкнули, мол, Фаулер сказал кластеры, значит кластеры и точка. Выделение БД на отдельную машину - это обычное дело. А разделять то, что выполняется в оперативной памяти, плохо из-за задержек в коммуникациях между компьютерами. Логично.

Это сообщение отредактировал(а) COVD - 2.9.2005, 16:37
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.1260 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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