![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Zandr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 433 Регистрация: 16.7.2004 Где: Новосибирск Репутация: нет Всего: 13 |
По некоторым пунктам могу оказаться не прав, поправьте, если что...
1) Если есть параметр, то гибче его указывать как env-entry, чем как init-param. 2) Глобальных env-entry как я понял не существует. Или существуют? 3) Для каждого сервлета создается только один инстанс (либо при старте приложения либо при запросе). Т.к. у меня есть параметры которые одинаковы для всех сервлетов - не проще ли сделать сервлеткоторый будет эти параметры отдавать другим? И как из одного сервлета получить указатель на другой? Вот. Если есть другие способы изменять параметр во время работы приложения, причем такие, чтобы параметр указывался только в одном месте - буду рад услышать... |
|||
|
||||
| Stampede |
|
||||||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 66 Всего: 144 |
Не страдай: сделай синглтон и храни в нем все глобальные переменные. Инстанциировать и нициализировать синглтон можно разными способами: через реализацию ServletContextListener или, скажем, через метод init() сервлета с параметром load-on-startup=1. Последнее - проще.
Не надо этого делать. Поскольку, согласно спека, код сервлета может исполняться из конкурентных тредов, то хранить какое бы то ни было состояние в объекте сервлета (то бишь в классовых переменных) - чревато. Если это константы - храни как статические переменные со статическими геттерами/сеттерами. Если динамически изменяющаяся информация, то или в синглтоне, либо опять же в статических переменных, но не забывай синхронизировать код доступа. А вообще лучше продумать какой-нибудь синхронизационный фреймворк - сон потом будет лучше
Таким способом, похоже, должен был стать ServletContext с его методами getAttribute() и setAttribute(), но уж больно им неудобно пользоваться из-за безтиповости параметров. Поэтому я предпочитаю синглтоны. И контроля больше, опять же -------------------- "If you want something done right, do it yourself" По секрету: выучить английский - реально! |
||||||
|
|||||||
| Zandr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 433 Регистрация: 16.7.2004 Где: Новосибирск Репутация: нет Всего: 13 |
Ок, пасиба
Это сообщение отредактировал(а) Zandr - 1.9.2005, 06:39 |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 16 Всего: 151 |
А я слышал, это не очень хороший подход - делать этакий мегаСинглтон. Только не помню, почему. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 66 Всего: 144 |
Ну да, не очень. Потому что в случае кластерного сервера получится некузяво. Поэтому завязываться на синглтон можно только если есть железная уверенность, что приложение никогда не будет работать на нескольких машинах, а иначе потом может быть мучительно больно в области попы По большому счету, это даже не столько вопрос синглтон-не синглтон. Если действительно есть подозрение, что понадобится распределенная обработка, то там вылезает сразу целая куча нетривиальных архитектурных вопросов, и их лучше с самого начала решить правильно. Причем таких вопросов, что мне сразу немедленно плохеет, как только я начинаю об этом думать. Поэтому я склоняюсь к мысли, что до известных пределов приложение лучше масштабировать путем наращивания компьютерной мощИ плюс возможно выделением отдельных машин под БД, сервер приложения и веб сервер. Плюс за счет оптимизации базы данных, настройки запросов, кэширования датабазных объектов. Но только не заставляйте меня впутываться в EJB - я лучше сразу пойду прыгну с паровоза. ЗЫ. Кстати, вся концепуия Spring'а основана на идее, что приложение будет сугубо локальным. И ничего, жив еще курилка |
|||
|
||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 4 Всего: 43 |
Я тоже об этом думал, но на одном форуме на меня цыкнули, мол, Фаулер сказал кластеры, значит кластеры и точка. Выделение БД на отдельную машину - это обычное дело. А разделять то, что выполняется в оперативной памяти, плохо из-за задержек в коммуникациях между компьютерами. Логично. Это сообщение отредактировал(а) COVD - 2.9.2005, 16:37 |
|||
|
||||
![]()
|
| Правила форума "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. |