![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| vasko |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 6.5.2006 Репутация: нет Всего: нет |
проблема то не на уровне сервер-клиент реализовать асинхронность (это ajax позволяет)
а на уровне сервер - мой java модуль. Просто напомню задачу, может с помощью другой технологии это можно реализовать. Мне необходимо реализовать java модуль который должен получать/отвечать Http запросы от клиента в асинхронном режиме. Java модуль не может быть JavaScriptom или php, это должно быть java приложение |
|||
|
||||
| ALKS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 354 Регистрация: 22.3.2006 Репутация: 6 Всего: 11 |
эм... запутался окончательно
что такое "твой java модуль" и "твой сервер"? если "сервер" тоже на Java. то твой "java модуль" может представлять из себя Message Driven Bean. Т.е. на лицо классический асинхронный обмен данным посредством очереди сообщений. пойдет??? |
|||
|
||||
| vasko |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 6.5.2006 Репутация: нет Всего: нет |
под сервером я имею ввиду сервер Apache, и.т.д. Сервер в цепочку я уже вставил...... Реквариементс от начальства был в двух словах: Асинхронный Http Adapter. Должен уметь принимать Http запросы и отвечать на них асинхронно Вот и все что у меня есть.... на выходе чз 3 недели должен быть java модуль, а я еще пока технологию просечь/прикрутить не могу |
|||
|
||||
| ALKS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 354 Регистрация: 22.3.2006 Репутация: 6 Всего: 11 |
в конце второй страницы от тебя наконец-то добились чего-то начинающего напоминающего постановку...
"Асинхронный Http Adapter" эээ между чем и чем? Apache к Java отношения не имеет. это HTTP сервер. что под ним? сервлет контейнер? полноценный апп сервер? блин тебе можно 10000 технологий перечислять. но вопрос в том что у тебя уже есть??? что ты можеш исползовать? |
|||
|
||||
| vasko |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 6.5.2006 Репутация: нет Всего: нет |
Бывалый, мне бы хотя бы одну технологию
Асинхронный Http Adapter должен находиться между клиентом (браузером) и нашим приложением. Нашему приложению для нормального функционирования до сих пор HTTP сервер и полноценный апп сервер не требовались. Поэтому в выборе того что должно быть - относительная свобода (если есть возможность, то должно быть бесплатным + минимум софта для решения задачи). Если нужно Apache, значит будем говорить заказчикам что нужно Apache, если нужен полноценный апп сервер значит будем говорить что нужен апп сервер. |
|||
|
||||
| ALKS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 354 Регистрация: 22.3.2006 Репутация: 6 Всего: 11 |
vasko ты не обижайся но с такой постановкой, я пы послал твое начальноство на 3 буквы. потому что понять что делать и зачем это надо - невозможно.
Итак если я понял у вас есть какая-то система не имеющая вэб интерфейса (так? потому что без HTTP сервера это как-то не очень возможно) теперь вы хотите к ней вэб интрефейс прикрутить. внимание вопрос - какие интерфейсы ваша система держит? как с ней обменеваться данными можно? |
|||
|
||||
| vasko |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 6.5.2006 Репутация: нет Всего: нет |
Я б с радостью, да еще не время
В том месте, где я приткнутся должен - все самописное, я от папы в конструкторе получаю колбэк, с помощью которого я асинхронно могу посылать данные. Когда сверху эти данные обработают, у меня дернут метод..... |
|||
|
||||
| ALKS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 354 Регистрация: 22.3.2006 Репутация: 6 Всего: 11 |
КАК? как ты ему асинхронно можеш данные послать? и каким образом у тебя дернут метод? твой модуль и старая программа это же разные процессы (или нет?) как они взаимодействуют?
|
|||
|
||||
| vasko |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 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() после чего я должен отправить его ответ клиенту. |
|||
|
||||
| ALKS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 354 Регистрация: 22.3.2006 Репутация: 6 Всего: 11 |
ну вот и все. я представляю себе примерно так:
мы получили реквест от кого-то на какую-то работу. этот кто-то информирует нас кто он такой, ну например используем SessionID. получив реквест мы тут же его синхронно разбираем и "вызываем request() на Adapter Loader" (я так понимаю там должен быть какой-то ключ. уникальтный номер задания, потому что когда у тебя дернут response() тебе должны сказать: вот вам результат в соответствии с таким-то заданием. причем тебе этот ключ должен быть известен. ну предполагаю что "вызов request() на Adapter Loader" вернет тебе номер задания, либо ты должен сам номер сгенерировтаь зарание и передать как один из параметров в этот request() ) после вызова request() отсылаем ему респонс назад - типа, спасибо получили запрос - вот вам ваш номер задания. Зачем тебе уникальный номер задания? чтобы хранить информацию о том, что "ждем результаты задания такого-то от клиента такого-то". получив результат (ну когда у тебя вызвали response() ). ты его помешаеш в свою таблицу ожидающих запросов. все это время тебя клиент каждые 0.5 сек спрвашивает: мое задание с ключём таким-то готово? ты каждый синхронно смотриш готово оно или нет. если готово - отсылаеш ему тут же результаты и вытераеш информацию о задании. оно готово и возвращено вопрашающему, тебя оно больше не интересует. суть тут в том что твой модуль выступает пасивным игроком. он реагирует на клиенские запросы, но сам запросы не инициирует. |
|||
|
||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 4 Всего: 43 |
сервлет принимает реквест от клиента, затем этот реквест пересылается в очередь на исполнение, а сам поток (сервлета) ставится в ожидание. Когда приходит респонс, то поток выводится из wait с помощью notify и отсылает респонс обратно клиенту (браузеру).
АдаптерЛоадер должен знать кому вернуть респонс, т.е. какой поток сервлета разбудить. Поэтому когда ему реквест на обработку отсылается, вместе с реквестом надо отсылать и ссылку на поток или связанный с ним обьект. Наверное, этот ваш модуль В и может служить таким обьектом. Для каждого потока сервлета , т.е. для каждого реквеста надо создавать этот обьект. (пока я писал, ALKS более подробно ответил Это сообщение отредактировал(а) COVD - 12.5.2006, 15:29 |
|||
|
||||
| ALKS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 354 Регистрация: 22.3.2006 Репутация: 6 Всего: 11 |
COVD, но если ты поток с сервлетом повесиш в ожидание, то и браузер тоже будет висеть в ожидании распоса это раз. а два твой сервлет контейнер начнет плодить потоки с сервлетами для других запросов и вообще - это ужастно
|
|||
|
||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 4 Всего: 43 |
это просто для понимания основ. |
|||
|
||||
| ALKS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 354 Регистрация: 22.3.2006 Репутация: 6 Всего: 11 |
хотя на самом деле если как утверждает, vasko, у него возврат результатов произходит в течении 1-2 секунд то и не такая плохая мысль
|
|||
|
||||
| VSergeyV |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 299 Регистрация: 9.5.2006 Где: Новосибирск Репутация: нет Всего: 3 |
Меня вот тоже интересует вопрос, может ли сервлет перезагрузить ранее отосланный ответ броузеру, т.е. перезагрузить страницу в броузере?
|
|||
|
||||
![]()
|
| Правила форума "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. |