Я начинаю разработку приложения используя следующие технологии STRUTS2 HIBERNATE SPRING POSTHRESQL TOMCAT. Сейчас идет этап планирования, опыта разработки самостоятельных крупных проектов нет. Подскажите какие контексты существуют и какие из них для чего использовать. Например в каком контексте хранить данные для отображения на странице (последний пост форума, последняя размещенная статья), в каком контексте хранить настройки по пользователю (количество посещений, права доступа, группы). Ну и конечно какие вообще есть контексты.
Здравствуйте, Soloik, Вы писали:
S>Я начинаю разработку приложения используя следующие технологии STRUTS2 HIBERNATE SPRING POSTHRESQL TOMCAT. Сейчас идет этап планирования, опыта разработки самостоятельных крупных проектов нет. Подскажите какие контексты существуют и какие из них для чего использовать. Например в каком контексте хранить данные для отображения на странице (последний пост форума, последняя размещенная статья), в каком контексте хранить настройки по пользователю (количество посещений, права доступа, группы). Ну и конечно какие вообще есть контексты.
Что такое "контекст" по Вашему?
"СССР — четыре слова и все лживые" — Вагрич Бахчанян
Здравствуйте, Igor.K, Вы писали: IK>Что такое "контекст" по Вашему?
1. ServletContext — Общесерверный контекст, который хранит в себе информацию о
различных сервлетах, их инициализациооных данных и прочие. Время жизни =
времени жизни сервера.
2. Session (Context) — Серверный контекст, хранящий информацию предназначенного
для конкретного пользователя. Время жизни = время сеанса работы пользователя
+ максимальный таймаут(проставляется в настройках сервера).
3. Request (Context) — Серверный контекст содержащий информацию, необходимую
передать пользователю(или следующему сервлету) по запросу пользователя.
Время жизни = запрос клиента (время между вызовами двух сервлетов).
Судя по Вашему вопросу я неточно обьяснил, это потому что теория есть а практики нет. Как организуются вышеописанные контексты, нужны ли они вообще. В общем по простому где нужно хранить данные о приложении.
Здравствуйте, Soloik, Вы писали:
S>Я начинаю разработку приложения используя следующие технологии STRUTS2 HIBERNATE SPRING POSTHRESQL TOMCAT. Сейчас идет этап планирования, опыта разработки самостоятельных крупных проектов нет. Подскажите какие контексты существуют и какие из них для чего использовать. Например в каком контексте хранить данные для отображения на странице (последний пост форума, последняя размещенная статья), в каком контексте хранить настройки по пользователю (количество посещений, права доступа, группы). Ну и конечно какие вообще есть контексты.
Все зависит от задачи. Но основное правило: минимизация времени хранения. Т.е. если что-то нужно только на время рендеринга страницы — это в Request, если на время жизни сессии (в том числе и в случае с multipage визардами) — можно повесить в сессии. Но если данных много — придется в сессии оставлять некий ID, а все состояние сбрасывать в бд.
Такие вещи как "последний пост форума, последняя размещенная статья" должны лежать в БД (возможно кешируемой). Иначе будет соревнование за одно/два поля в например servlet context и получишь вместо многопоточного сервера — однопоточный.
Здравствуйте, Soloik, Вы писали:
S>Здравствуйте, Igor.K, Вы писали: IK>>Что такое "контекст" по Вашему?
S>Подскажите какие контексты существуют и какие из них для чего использовать.
Ну вот, на этот вопрос Вы уже себе, практически, ответили.
S>Например в каком контексте хранить данные для отображения на странице (последний пост форума, последняя размещенная статья)
Application — если последний пост форума для всех пользователей этого форума. И в Session, если это последний пост для конкретного пользователя. Хотя, если пользователь не авторизовался, то это, в общем то, не имеет смысла. То же самое для последней размещенной статьи.
S>в каком контексте хранить настройки по пользователю (количество посещений, права доступа, группы).
Session.
S>Ну и конечно какие вообще есть контексты.
Я, тут вот, начал знакомится с Seam framework http://www.jboss.com/products/seam. Так они поддерживают еще ряд контекстов:
— Stateless context
— Event context, хотя, это, фактически request context.
— Page context
— Conversation context
— Business process context
"СССР — четыре слова и все лживые" — Вагрич Бахчанян
S>>Например в каком контексте хранить данные для отображения на странице
Уточнение: данные, которые вы собираетесь показывать на страничке, могут хранится в любых "контекстах". aka50 упомянул даже еще один "контекст" — базы данных.
"СССР — четыре слова и все лживые" — Вагрич Бахчанян
S>>Например в каком контексте хранить данные для отображения на странице
Уточнение: данные, которые вы собираетесь показывать на страничке, могут хранится в любых "контекстах". aka50 упомянул даже еще один "контекст" — базы данных, хотя к servlet контейнерам это и не относится.
"СССР — четыре слова и все лживые" — Вагрич Бахчанян
Re[4]: Контексты
От:
Аноним
Дата:
02.06.07 12:53
Оценка:
Здравствуйте, Igor.K, Вы писали:
IK>Ну вот, на этот вопрос Вы уже себе, практически, ответили.
Не совсем. Я еще не до конца понял какими обьектами или классами реализуются контексты.
1. Application — javax.servlet.ServletContext — правильно?
2. Session — javax.servlet.http.HttpSession — так?
Здравствуйте, <Аноним>, Вы писали:
А>Здравствуйте, Igor.K, Вы писали:
IK>>Ну вот, на этот вопрос Вы уже себе, практически, ответили. А>Не совсем. Я еще не до конца понял какими обьектами или классами реализуются контексты. А>1. Application — javax.servlet.ServletContext — правильно?
да. А>2. Session — javax.servlet.http.HttpSession — так?
да.
А>А астальные.
javax.servlet.ServletRequest
Только это интерфейсы, а не классы. Реализация уже зависит от конкретного контейнера.
... << RSDN@Home 1.2.0 alpha rev. 653>>
"СССР — четыре слова и все лживые" — Вагрич Бахчанян