Обмен данными в реальном времени через AJAX с несколькими потоками

Я разрабатываю приложение на JSF 2.0, и я хотел бы иметь многострочное текстовое поле, которое отображает выходные данные, которые считываются (построчно) из файла в реальном времени.

Итак, цель состоит в том, чтобы иметь страницу с кнопкой на ней, которая запускает серверную часть, чтобы начать чтение из файла, а затем отображать результаты по мере чтения в текстовом поле.


Я думал об этом в следующем способ:

Попросите локальную страницу отслеживать, какие строки она извлекла / отобразила в текстовом поле.

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

Это будет продолжаться до тех пор, пока не будет полностью извлечен весь файл.


Проблема в том, что метод компонента, который читает из файла, выполняет цикл, который блокирует. Значит, для одновременного чтения из структуры данных, в которую он пишет, потребуется использование дополнительных потоков, верно? Я слышал, что создание новых потоков в веб-приложении - потенциально опасный ход, и что следует использовать пулы потоков и т. Д.

Может ли кто-нибудь рассказать об этом?


Обновление: Я попробовал несколько разных вещи без везения. Но мне удалось заставить его работать, создав отдельный поток для запуска моего цикла блокировки, в то время как основной поток можно использовать для чтения из него всякий раз, когда обрабатывается запрос AJAX. Есть ли хорошая библиотека, которую я мог бы использовать, чтобы сделать что-то подобное, которое по-прежнему дает JSF некоторый контроль жизненного цикла над этим потоком ?

6
задан idolize 22 June 2011 в 14:32
поделиться