Что такое шаблон java cometd для уведомления клиентов о событиях на стороне сервера? - PullRequest
2 голосов
/ 23 июня 2011

Я изо всех сил пытаюсь понять эффективный способ уведомить клиентов, не тратя впустую потоки.Когда клиент подключается к сервлету CometD, я хочу начать мониторинг серверных событий для клиента и публиковать их на клиенте, когда они доступны.Это должно быть сделано в пуле потоков или в том, что не использует поток сервлета.Все примеры, которые я вижу, относятся к событиям, инициированным клиентом, и слушателям на сервере.Мне нужно обратное ... Я просто передаю объект Client / ServerSession своему собственному оборудованию?Похоже, это будет обычным делом, но я не могу найти никаких примеров.

1 Ответ

0 голосов
/ 23 июня 2011

Посмотрите на Servlet 3.0 Async API. В частности, ServletRequest.startAsync() вернет вам объект AsyncContext, который вы можете «передать на собственное оборудование», а затем вернуть из вашего сервлета doGet () / doPost () / etc. без разрыва соединения.

Существуют различные шаблоны для отправки данных обратно клиенту. Я полагаю, что ваш "собственный механизм" может просто извлечь ServletResponse из AsyncContext и написать ему. Другой подход - вызвать dispatch() для AsyncContext, что приведет к повторному вызову метода doGet () / doPost ().

...