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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сокет в сервлете.... Сокет в сервлете.... 
:(
    Опции темы
vasko
Дата 18.5.2006, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



что такое пул соединений?  
PM MAIL   Вверх
COVD
Дата 18.5.2006, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

что такое пул соединений?


Хранилище готовых к употреблению соединений. В данном случае речь шла о соединениях к базе данных. Обычно используют уже существующие пакеты, которые только настроить надо. После использования соединения оно возвращается обратно в хранилище и становится доступным другому желающему. Как книги в библиотеке.
  

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


Опытный
**


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

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



вы меня с SingleThreadModel о котором я и не слышал ни чего до этого топа запутали совсем smile

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

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

Но все это конечно теории и нюансы имплементации конкретного апп сервера, но вы как разработчик должны предполагать что ваше вэб приложение вполне может работать на апп сервере который плодит сервлеты smile

начет того что хранить в контексте что-то это идея не лучшая - согласен полностью. да и честно говря не очень понятно, зачем. разве что ссылку на объект-синглтон туда пихать. smile 
PM   Вверх
COVD
Дата 18.5.2006, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

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


Неверная логика. Метод - он всегда один (не зависит от количества инстансев), потому что это описание, что надо сделать, набор инструкций. Метод doGet будет одновременно исполняться разными потоками, и у каждого потока будет свой участок памяти, где создаются локальные переменные метода.

Инстансы же нужны, чтобы хранить состояние, данные. Если вы в сервлете их не храните, то увеличение количества обьектов сервлета не имеет смысла, это только отожрет память, и ничего более.  

Думаю, что создатели серверов это учитывали, и обьекты сервлетов будут плодиться только, если сервер об этом явно попросить, например, имплементируя SingleThreadModel. Т.е. если вы намерены хранить данные именно в сервлете (а не в сессии) и поэтому хотите иметь на каждый поток свой обьект сервлета.
     

Это сообщение отредактировал(а) COVD - 18.5.2006, 21:03
PM MAIL   Вверх
jimur
Дата 18.5.2006, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(vasko @  18.5.2006,  13:34 Найти цитируемый пост)
Сервлету необходимо взаимодействовать с другим модулем. Для связи между ними выбрал сокеты.

Может в этом и есть корень проблемыsmile
Есть же более готовые к употреблению технологии взаимодействия, чем сокеты: RMI, Corba, WS наконец. 
PM MAIL   Вверх
ALKS
Дата 19.5.2006, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



jimur, быстрее сокетов ничего нету. smile 
PM   Вверх
vasko
Дата 19.5.2006, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



теоретически как разрешить проблему мне понятно, спасибо всем огромное, особенно ALKS'у....

только вот начальство пока не согласно с тем, что бы клиент пулил меня для асинхронного получения ответа smile

буду копать в направление Web Service..... 
PM MAIL   Вверх
jimur
Дата 19.5.2006, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(ALKS @  19.5.2006,  08:14 Найти цитируемый пост)
jimur, быстрее сокетов ничего нету. smile  

Не ерничай smile
Выбор технологии определяется параметрами задачи и исполнителей.

Цитата(vasko @  19.5.2006,  09:13 Найти цитируемый пост)
буду копать в направление Web Service.....  

А что за модуль (на чем написан)?
И какое взаимодействие (удаленное/нет)? 
PM MAIL   Вверх
ALKS
Дата 19.5.2006, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(COVD @ 18.5.2006,  20:25)
Цитата

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


Неверная логика. Метод - он всегда один (не зависит от количества инстансев), потому что это описание, что надо сделать, набор инструкций. Метод doGet будет одновременно исполняться разными потоками, и у каждого потока будет свой участок памяти, где создаются локальные переменные метода.

Инстансы же нужны, чтобы хранить состояние, данные. Если вы в сервлете их не храните, то увеличение количества обьектов сервлета не имеет смысла, это только отожрет память, и ничего более.  

Думаю, что создатели серверов это учитывали, и обьекты сервлетов будут плодиться только, если сервер об этом явно попросить, например, имплементируя SingleThreadModel. Т.е. если вы намерены хранить данные именно в сервлете (а не в сессии) и поэтому хотите иметь на каждый поток свой обьект сервлета.

COVD, а блокировки где, как ты думаеш, храняться? в методе или все-таки в инстансе объекта? smile метод-то он всегда один - тут ты прав. но синхронизируеться он относительно инстанса, так что если мы имеем дело с многопоточным приложением, то... ну я уверен, ты понял что я хотел сказать  smile 
PM   Вверх
vasko
Дата 19.5.2006, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(jimur @  19.5.2006,  09:52 Найти цитируемый пост)
А что за модуль (на чем написан)?
И какое взаимодействие (удаленное/нет)?  


jimur, суть задачи подробно разбирали в теме "Асинхронный ответ"
(http://forum.vingrad.ru/index.php?showtopic=94893) 
PM MAIL   Вверх
jimur
Дата 19.5.2006, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(vasko @  19.5.2006,  11:05 Найти цитируемый пост)
jimur, суть задачи подробно разбирали в теме "Асинхронный ответ"
(http://forum.vingrad.ru/index.php?showtopic=94893)  

Если я правильно понял второй модуль запускаетсся как отдельный процесс, возможно на другой машине, в нем должне жить реализованный тобой адаптер.
Тогда решение примерно следующее:
Реализуешь адаптер (RMI Server), который регистрируется в rmiregistry. Твой сервлет использует RMI Client для отправки заданий на сервер и для получения результатов. Вроде ничего сложного. 
PM MAIL   Вверх
vasko
Дата 19.5.2006, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ок, спасибо jimur. это еще один из вариантов решения проблемы.... 
а случаем ссылок на статьи или книги по технологии RMI нету? 
можно ли RMI Server реализовать на java (не java-script а именно джава)? 
PM MAIL   Вверх
jimur
Дата 19.5.2006, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



ссылка на туториал http://www.google.ru/search?q=rmi+tutorial
этого достаточно для реализации простого приложения
на jguru.com есть хороший раздел на эту тему
спецификацию тоже хорошо бы прочитать smile


Цитата(vasko @  19.5.2006,  11:54 Найти цитируемый пост)
можно ли RMI Server реализовать на java (не java-script а именно джава)?

ммм...
java-script то здесь вообще каким боком? 
PM MAIL   Вверх
ALKS
Дата 19.5.2006, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Эээ RMI (Remote method invocation ) это только Java. за пределами Java эта абревиатура не существует. в общем случае, вне языков программированя, такая техника называеться RPC (remote procedure call). RMI это по сути реализация RPC в Java.  
PM   Вверх
vasko
Дата 19.5.2006, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(jimur @  19.5.2006,  12:07 Найти цитируемый пост)
java-script то здесь вообще каким боком?

jimur, не зная теории можно и не такие вопросы задатьsmile

по поводу доков - неплохая инфа тут - 
RMI tutorial

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

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

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


 




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


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

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