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

Поиск:

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


Новичок



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

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



Стоит задача в написание сервлета, который мог бы отправлять ответ клиенту асинхронно
Т.е что наподобее такого:
Код

public class HttpAgent extends HttpServlet {
      public void service(HttpServletRequest Req, HttpServletResponse Resp) {
                 // получили запрос
                 // модифицировали запрос
                 // отдали на обработку в другой модуль
                 // (вот тут проблема: обработка происходит асинхронно и ответ мне из модуля придет
                 // асинхронно.) 
                 // Как мне отправить клиенту (который у меня дернул доГет или доПост) потом ответ
      }
}
 
PM MAIL   Вверх
ALKS
Дата 6.5.2006, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



а никак. клиент может к тому моменту браузер закрыть и куда ты будеш ему отправлять ответ?
 
PM   Вверх
vasko
Дата 6.5.2006, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



это уже его проблемы будут.... тем более под асинронностью я не подозревал часы, тем более сутки - максимум 1-2 сек.

Правильно ли будет такой подход:
1) в методе service() сохранять (к примеру в HashMap) HttpServletResponse по уникальному ключу
2) отдавать наверх HttpServletRequest c id
3) потом, когда приложение сверху обработает HttpServletRequest и вернет мне данные достать по id HttpServletResponse 
4) Как обычно, нашпиговать HttpServletResponse данными - 
Код


public void doGet(HttpServletRequest req, HttpServletResponse resp){
       hashMap.put(key, resp);
       application.sendReq(req, key);
}


public void sendResponse(Integer key) {
       HttpServletResponse resp = (HttpServletResponse)hashMap.get(key);
       
      resp.setContentType("text/html");
      java.io.PrintWriter out = response.getWriter( );
      out.println("bla bla");

}


Вопрос тот же, уйдет ли в методе sendResponse() ответ соответствующему клиенту? 
PM MAIL   Вверх
ALKS
Дата 6.5.2006, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



не правильно. как только сервлет контейнер отпработает запрос он тут же уничтожит поток с оным. так что тот факт что ты сохраниш ссылку на уже мертвый HttpServletResponse тебе никак не поможет.
процессинг HTTP запросов синхронен. точка. ты ничего тут не сможеш зделать.

если у тебя реч идет о 1-2 секундах то не заморачивайся с асинхронностью. пусть клиент ждет.
либо тебе нужна принципиально другая технология а не сервлеты. ну  Ajax к примеру.... 
PM   Вверх
vasko
Дата 6.5.2006, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



я в этом деле почти новичок... может посоветуете - необходимо реализовать Http proxy между нашим приложением и клиентом, причем обмен между разрабатываем мною модулем и нашим приложение происходит асинхронно....  
Есть ль какие идеи по дизайну приложения?
Про Ajax не слышалsmile Есть ли ссылки на книги, статьи, примеры (желательно на русском) ? 
PM MAIL   Вверх
ALKS
Дата 6.5.2006, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



так стоп. твой "клиент" это человек с браузером или просто еще одна прога? если тебе необходимо организовать асинхронный обмен данными между дувумя процессами накой тебе HTTP? это и на простых сокетах запросто можно сделать. 
PM   Вверх
katala
Дата 6.5.2006, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата

Про Ajax не слышал Есть ли ссылки на книги, статьи, примеры (желательно на русском) ? 

да вот это очень интересный вопрос!!!! может кто даст ссылки(если нет на русском можно и на инглише(хотя 1 вариант лучше smile
PM MAIL   Вверх
ALKS
Дата 6.5.2006, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



да пожалуйста: http://ru.wikipedia.org/wiki/Ajax

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


Новичок



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

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



Почитал про AJAX. В принципе это то, что нужно. Одно только маленькое но.
1) Клиент общается с серверным приложением асинхронно - ОК, то что нужно
2) Приложение, с которым оно общается - это скрипт (Java-script или php) - не очень хорошо, а может и совсем не хорошо, т.к:
Как я уже писал, приложение которое я должен написать - это java модуль, который должен асинхронно общаться с вышестоящим приложением. 
Получается, что я должен написать скрипт, который общается с java модулем асинхронно
                                                                                                            мой                                      Application
браузер <----асинхр.---->  Сервер. скрипт <----асинхр?----> java модуль <----асинхр.---->  Level

Возможно ли такое? 
Возможно ли из php (если на нем написан скрипт) подключиться, не создать, а именно подключиться к jvm? И если да, то как лучше реализовать взаимодействие java -> php? 
Как работать php -> java вроде бы понятно, если разобраться с подключением к jvm 
PM MAIL   Вверх
vasko
Дата 11.5.2006, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вопрос в догонку по AJAX
можнол ли в методе XMLHttpRequest.open() обращаться не к скрипту а к java модулю?
например так:
XMLHttpRequest.open("GET", "http://kto-to.ru/my_module.jar", true); 
PM MAIL   Вверх
batigoal
Дата 11.5.2006, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

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



Сомневаюсь. Думаю, веб-сервер в ответ на это честно постарается вернуть сам файл. 


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
UnicornMirage
Дата 11.5.2006, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



PM MAIL   Вверх
ALKS
Дата 11.5.2006, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ребят Ajax это просто концепция. но есть реализующие эту концепцию фрейворки для Java. 
В простейшем случае ну есть у вас аплет который висит незаметно в браузере и постоянно комуницирует с серверной сторой ну для простоты путем тем же HTTP реквестов  к сервлету. ну скажем для совсем простоты каждые 0.5 секунды он спрашивает сервлет готово ли то самое асинхронрое задание smile и когда готово - аплет выкидывает ошарашенному пользователю в браузе сообщение - "готово! кликай сюды чтобы забрать".

Но все эти детали зависит уже от фреймворка который вы выберете. выбирайте и разбирайтесь smile 
PM   Вверх
UnicornMirage
Дата 11.5.2006, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



какие фреймворки работают с аяксом? 
PM MAIL   Вверх
ALKS
Дата 11.5.2006, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



не "работают", а "реализуют концепцию". c AJAX нельзя работать smile это абстрактый подход к разработке вэб приложений - не более.

UnicornMirage,  ты же сам линков накидал. ну вот тебе еще: http://getahead.ltd.uk/dwr/ 
PM   Вверх
Страницы: (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.0548 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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