![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
Люди, вопрос. Предположим, надо сделаь сайтик, который работает под нагрузкой.
При этом желательно, чтобы каждый запрос не обрабатывался в своем процессе(как в пхп), т.е. чтобы была у нескольких запросов общая память(например, хранить кеш, хендл для БД и т.д.) Какую технологию использовать? Цель тут: не только сделать сабж, но и въехать в J2EE. И еще: сайтик должен держать нагрузку, под него будет отдельный сервер(как минимум). Как джава держит нагрузку по сравнению с тем же пхп(nginX, fastcgi, PHP)? |
|||
|
||||
| Tony |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1159 Регистрация: 3.3.2006 Где: Riga Репутация: 6 Всего: 12 |
Запросы в й2ее не рожают отдельный процесс. Есть контексты: SessionContext, ServletContext, RequestContext, PageContext. В каторых хранят какието данные.По принципу ключ - значение.
Их много. На4иная от 4истого ejb до фреймворков (jsf,struts,webwork...) + DB ORM(Hibernate)
Eщё как держит. |
||||||
|
|||||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
Обрабатывать все запросы одним потоком можно используя deprecated SingleThreadModel, это мягко говоря не рекомендуется. В общем случае каждый запрос HTTP обрабатывается отдельным потоком. Кэш можно организовать используя статические атрибуты и методы или паттерн Singleton. Соединение с базой данных оычно берется из пула соединений, который либо встроен в конкретный сервер приложений либо либо используется какая-то готовая реализация типа Jakarta DBCP. Вообще все общее, что должны разделять множество потоков, обычно реализуется с помощью Singleton. Технологию чего?
Довольно распространена практика перевода сайтов с PHP на Java, об обратном не слышал. Думаю, это говорит само за себя. Добавлено @ 17:44 Каждый запрос обрабатывается отдельным потоком. Другое дело, что веб-контейнер как правило эти потоки не создает каждый раз, а использует пул потоков. |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 8 Всего: 118 |
Хорошо, только надо памяти побольше. И будет вполне пристойно. Работает уже "разогретый" варинат JVM очень прилично по скорости.
|
|||
|
||||
| nerezus |
|
||||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
Добавлено @ 17:57
|
||||
|
|||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 8 Всего: 118 |
Все зависит от нагрузки, но меньше 1 Гига лучше не делать. И PHP требует (во всяком случае раньше требовал) меньше памяти. Но ее-то как раз не проблема поставить - она теперь дешевая. Не то, что лет 10 назад. Тогда 1 Мб стоил около 50 долларов |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
Тут нашел пример такой:
Т.е. т.к.синтаксис джавы я знаю, то могу юзать ее. Но, чую, что без фреймворков почти никто не работает? Я прав? Сейчас посмотрел примеры - все вроде кристально ясно. Стоит ли заниматься сервлетами или поискать другую технологию? Кстати, если я создаю объекты из сервлета, которые записывают ссылку на себя в статик-переменные класса, то такие объекты не удаляются до перезагрузки сервера? |
|||
|
||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
Абсолютно. Технологию сервлетов знать надо хотя бы потому что все фреймворки на них построены и понимать как они работают - это, на мой взгляд, необходимость. А вот писать используя голые сервлеты/JSP, думаю, не имеет большого смысла. Разве что если сам свой фреймворк напишешь, что будет крайне полезно. Правда с нуля врял ли что-то путнее получится, поэтому лучше взять готовый, коих великое множество, на любой вкус и цвет.
Да, не удаляются до перезапуска JVM. |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
Спс за советы. А что надо для разработки?
Есть JDK SE 1.6, EE нету, но она нужна? сервлеты же работают вроде? и еще, какой фреймворк посоветуете? |
|||
|
||||
| JUncle |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 6.4.2006 Где: Казань, РФ Репутация: нет Всего: 1 |
Насколько я понял, сейчас тебе EE не нужна. servlet-api и т.п., не входящее в состав J2SE, поставляется с сервлет-контейнерами/серверами приложений. --------------------
class JUncle extends Man // singleton{/*...*/} |
|||
|
||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
Нужен какой-нибудь веб-контейнер, Tomcat, например,- он самый распространенный и считается эталонной реализацией сервлетов и JSP. Хорошо бы еще IDE, которая поддерживает разработку веб-приложений. Впрочем, и Netbeans и IDEA и Eclipse это умеют, последняя в комплекте с WTP-плагинами. Это вопрос сложный. Их очень много. Рекомендовал бы Spring, но я думаю с него будет сложно начинать поскольку это не только веб-фреймворк, это гораздо больше. Поэтому лучше взять что-нибудь попроще, например, Maverick или Struts. |
|||
|
||||
![]()
|
| Правила форума "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. |