![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Fieral |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 10.12.2007 Репутация: нет Всего: 1 |
Такая проблемма:
Есть сервлет, который дёргает RMI метод на удалённом сервере:
Так вот видно что i это номер текущего вхождения в processRequest() И в консоли поначалу печатается Do 1 UnDo 1 Do 2 UnDo 2 Do 3 UnDo 3 Do 4 UnDo 4 ... НО потом начинается что-то типа: Do 1 Do 2 UnDo 1 UnDo 2 Do 3 Do 4 UnDo 4 Do 5 Do 6 Do 7 UnDo 5 UnDo 3 UnDo 7 UnDo 6 ... Если же распечатать номер треда который делает вход System.out.println("Do " + t+" th "+Thread.currentThread().toString()); то там можно увидеть примерно такое: Do 7 th Thread[http-8080-3,5,main] Do 8 th Thread[http-8080-2,5,main] Do 6 th Thread[http-8080-5,5,main] тоесть получается что один запрос обрабатывают несколько тредов с именами вида "Thread[http-8080-*,5,main]" судя по логам RMI сервера - его удалённый метод вызывает каждый тред без исключения в браузере же показывается результат работы только одного из них (причём не понятно какого - каждый раз разный) ////Но мне необходимо чтоб на одно открытие страницы удалённый метод вызывался один раз. Вопрос: откуда берутся лишние треды, зачем они нужны и что с ними делать? |
|||
|
||||
COVD |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 4 Всего: 43 |
Неправильный вывод. Один запрос обрабатывается одним потоком. После завершения обработки запроса поток возвращается в пул.
это три разных запроса |
||||
|
|||||
Fieral |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 10.12.2007 Репутация: нет Всего: 1 |
откуда тогда берутся лишние запросы? если я открываю один браузер и в нем одну вкладку?
--------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор. |
|||
|
||||
COVD |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 4 Всего: 43 |
Один вызов метода processRequest - это один запрос. Если метод обьявить synchronized, то запросы будут обрабатываться поочередно. Откуда "лишние" запросы только вы сами можете определить. Анализируйте хтмл страницу - может там auto refresh указан или еще что-то.
Это сообщение отредактировал(а) COVD - 9.2.2009, 01:39 |
|||
|
||||
Fieral |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 10.12.2007 Репутация: нет Всего: 1 |
Do Thread[http-8080-3,5,main] org.apache.catalina.session.StandardSessionFacade@272961 : >>> 795906749AA85B128D733F7B3D819029 UnDo Thread[http-8080-3,5,main] Do Thread[http-8080-1,5,main] org.apache.catalina.session.StandardSessionFacade@272961 : >>> 795906749AA85B128D733F7B3D819029 UnDo Thread[http-8080-1,5,main] Do Thread[http-8080-3,5,main] org.apache.catalina.session.StandardSessionFacade@272961 : >>> 795906749AA85B128D733F7B3D819029 Do Thread[http-8080-1,5,main] org.apache.catalina.session.StandardSessionFacade@272961 : >>> 795906749AA85B128D733F7B3D819029 UnDo Thread[http-8080-3,5,main] UnDo Thread[http-8080-1,5,main] Do Thread[http-8080-3,5,main] org.apache.catalina.session.StandardSessionFacade@272961 : >>> 795906749AA85B128D733F7B3D819029 UnDo Thread[http-8080-3,5,main] Почему тогда несколько стредов и у всех одинаковый Session ID? страница одна и таже а количесво тредов меняется от одного до 7 Это сообщение отредактировал(а) Fieral - 9.2.2009, 01:49 --------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор. |
|||
|
||||
Kangaroo |
|
|||
![]() AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 14 Всего: 104 |
Так сессия для того и есть, чтобы быть одной для разных страниц/запросов. Пробуй это:
-------------------- Lost.... |
|||
|
||||
am_sasa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 19.12.2006 Репутация: нет Всего: нет |
может маппинг неверный? вот и лезут левые запросы, например за картинками... |
|||
|
||||
Fieral |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 10.12.2007 Репутация: нет Всего: 1 |
Ох.
В общем порядок такой: 1) Сервлетт замапен на "/" 2) Открываю страницу http://localhost:9000/WebApplication4/ 3) Сервлет из protected void processRequest(HttpServletRequest Q, HttpServletResponse R) бросает запрос на RMI сервер, который возвращает инстанц класса Anton_Doc 4) Сервлет вызывает метод этого класса .Save2Stream(out); где out это PrintWrite респонса. Так и не пойму откуда лишие запросы лезут. Вот собсно код DoDo, web.xml и записываемая страница:
web.xml
Это сообщение отредактировал(а) Fieral - 9.2.2009, 16:37 --------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор. |
||||||
|
|||||||
Fieral |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 10.12.2007 Репутация: нет Всего: 1 |
В общем, несколько тредов вызывается если сервлетт замапин на / или /*
Судя по всему это особенность Томката, который заходя на / вызывает сервлетт по адресу /, после чего делает новый запрос по редиректу и зацикливается, пока огранечитель на число запросов или ещё какая-та там система защиты не останавливает это мракобесие. Других версий у меня нет. --------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор. |
|||
|
||||
am_sasa |
|
||||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 19.12.2006 Репутация: нет Всего: нет |
а у меня версия есть! это к тебе прут вот эти запросы
это как минимум, дальше не смотрел, вставь печать запроса и усе увидишь |
||||
|
|||||
Fieral |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 10.12.2007 Репутация: нет Всего: 1 |
без
тоже самое --------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор. |
|||
|
||||
am_sasa |
|
||||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 19.12.2006 Репутация: нет Всего: нет |
так там в стилях еще картинки! сделай тестовую страницу с хело ворлд и не парься, сразу все поймешь. Короче, делай нормальный мапинг и будет тебе счасть ![]() |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "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. |