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

Поиск:

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


Новичок



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

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



проблема то не на уровне сервер-клиент реализовать асинхронность (это ajax позволяет)
а на уровне сервер - мой java модуль. Просто напомню задачу, может с помощью другой технологии это можно реализовать.

Мне необходимо реализовать java модуль который должен получать/отвечать Http запросы от клиента в асинхронном режиме. Java модуль не может быть JavaScriptom или php, это должно быть java приложение
 
PM MAIL   Вверх
ALKS
Дата 11.5.2006, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



эм... запутался окончательно smile

что такое "твой java модуль" и  "твой сервер"? если "сервер" тоже на Java. то твой "java модуль" может представлять из себя Message Driven Bean. Т.е. на лицо классический асинхронный обмен данным посредством очереди сообщений.

пойдет??? 
PM   Вверх
vasko
Дата 11.5.2006, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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




под сервером я имею ввиду сервер Apache, и.т.д.

Сервер в цепочку я уже вставил......

Реквариементс от начальства был в двух словах: Асинхронный Http Adapter.
Должен уметь принимать Http запросы и отвечать на них асинхронно

Вот и все что у меня есть.... на выходе чз 3 недели должен быть java модуль, а я еще пока технологию просечь/прикрутить не могуsmile 
PM MAIL   Вверх
ALKS
Дата 11.5.2006, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



в конце второй страницы от тебя наконец-то добились чего-то начинающего напоминающего постановку...
"Асинхронный Http Adapter" эээ между чем и чем? Apache к Java отношения не имеет. это HTTP сервер. что под ним? сервлет контейнер? полноценный апп сервер? блин тебе можно 10000 технологий перечислять. но вопрос в том что у тебя уже есть???
что ты можеш исползовать? 
PM   Вверх
vasko
Дата 12.5.2006, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Бывалый, мне бы хотя бы одну технологиюsmile

Асинхронный Http Adapter должен находиться между клиентом (браузером) и нашим приложением. 
Нашему приложению для нормального функционирования до сих пор HTTP сервер и 
полноценный апп сервер не требовались. 

Поэтому в выборе того что должно быть - относительная свобода (если есть возможность, то 
должно быть бесплатным + минимум софта для решения задачи). Если нужно Apache, 
значит будем говорить заказчикам что нужно Apache, если нужен полноценный апп сервер значит 
будем говорить что нужен апп сервер.
 
PM MAIL   Вверх
ALKS
Дата 12.5.2006, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



vasko ты не обижайся но с такой постановкой, я пы послал твое начальноство на 3 буквы. потому что понять что делать и зачем это надо - невозможно.

Итак если я понял у вас есть какая-то система не имеющая вэб интерфейса (так? потому что без HTTP сервера это как-то не очень возможно) теперь вы хотите к ней вэб интрефейс прикрутить. внимание вопрос - какие интерфейсы ваша система держит? как с ней обменеваться данными можно?  
PM   Вверх
vasko
Дата 12.5.2006, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я б с радостью, да еще не времяsmile

В том месте, где я приткнутся должен - все самописное, я от папы в конструкторе получаю колбэк, с помощью которого я асинхронно могу посылать данные. Когда сверху эти данные обработают, у меня дернут метод..... 
PM MAIL   Вверх
ALKS
Дата 12.5.2006, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



КАК? как ты ему асинхронно можеш данные послать? и каким образом у тебя дернут метод? твой модуль и старая программа это же разные процессы (или нет?) как они взаимодействуют? 
PM   Вверх
vasko
Дата 12.5.2006, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть наше ПО, реализованное на java. В нем один из модулей - Adapter Loader
который умеет создавать BaseAdapter's и у него есть public метод request(Object o) с помощью которого можно складировать к нему в очередь запросы

В - мой модуль, унаследовавший от интерфейса BaseAdapter public метод response(Object o)


Adapter Loader создает объект В: В в = new В(this);

при получении http запроса от клиента я вызываю request() на Adapter Loader. Этот метод складирует мое сообщение в очередь AdapterLoader, которая обрабатывается им асинхронно.

Как Adapter Loader обработает данные, он дернет у меня метод response() после чего я должен отправить его ответ клиенту. 
PM MAIL   Вверх
ALKS
Дата 12.5.2006, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ну вот и все. я представляю себе примерно так:

мы получили реквест от кого-то на какую-то работу. этот кто-то информирует нас кто он такой, ну например используем SessionID. 

получив реквест мы тут же его синхронно разбираем и "вызываем  request() на Adapter Loader"
(я так понимаю там должен быть какой-то ключ. уникальтный номер задания, потому что когда у тебя  дернут response() тебе должны сказать: вот вам результат в соответствии с таким-то заданием. причем тебе этот ключ должен быть известен. ну предполагаю что "вызов  request() на Adapter Loader" вернет тебе номер задания, либо ты должен сам номер сгенерировтаь зарание и передать как один из параметров в этот  request() ) 

после вызова request()  отсылаем ему респонс назад - типа, спасибо получили запрос - вот вам ваш номер задания.

Зачем тебе уникальный номер задания? чтобы хранить информацию о том, что "ждем результаты задания такого-то от клиента такого-то".

получив результат (ну когда у тебя вызвали response() ). ты его помешаеш в свою таблицу ожидающих запросов.

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

суть тут в том что твой модуль выступает пасивным игроком. он реагирует на клиенские запросы, но сам запросы не инициирует.




 
PM   Вверх
COVD
Дата 12.5.2006, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



сервлет принимает реквест от клиента, затем этот реквест пересылается в очередь на исполнение, а сам поток (сервлета) ставится в ожидание.  Когда приходит респонс, то поток выводится из wait с помощью notify и отсылает респонс обратно клиенту (браузеру).

АдаптерЛоадер должен знать кому вернуть респонс, т.е.  какой поток сервлета разбудить. Поэтому когда ему реквест на обработку отсылается, вместе с реквестом надо отсылать и ссылку на поток или связанный с ним обьект. Наверное, этот ваш модуль В и может служить таким обьектом. Для каждого потока сервлета , т.е. для каждого реквеста надо создавать этот обьект.

(пока я писал, ALKS более подробно ответил smile)    

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


Опытный
**


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

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



COVD, но если ты поток с сервлетом повесиш в ожидание, то и браузер тоже будет висеть в ожидании распоса это раз. а два твой сервлет контейнер начнет плодить потоки с сервлетами для других запросов и вообще - это ужастно smile 
PM   Вверх
COVD
Дата 12.5.2006, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

это ужастно 

это просто для понимания основ. smile  
PM MAIL   Вверх
ALKS
Дата 12.5.2006, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



хотя на самом деле если как утверждает, vasko, у него возврат результатов произходит в течении 1-2 секунд то и не такая плохая мысль smile 
PM   Вверх
VSergeyV
Дата 13.5.2006, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 299
Регистрация: 9.5.2006
Где: Новосибирск

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



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

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

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


 




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


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

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