Я разрабатываю приложение на JSF 2.0, и я хотел бы иметь многострочное текстовое поле, которое отображает выходные данные, которые считываются (построчно) из файла в реальном времени.
Итак, цель состоит в том, чтобы иметь страницу с кнопкой на ней, которая запускает серверную часть, чтобы начать чтение из файла, а затем отображать результаты по мере чтения в текстовом поле.
Я думал об этом в следующем способ:
Попросите локальную страницу отслеживать, какие строки она извлекла / отобразила в текстовом поле.
Периодически локальная страница будет опрашивать серверную часть с помощью AJAX и запрашивать любые новые данные, которые были прочитаны (сообщите ему какие строки есть на странице, и с тех пор извлекает только новые строки).
Это будет продолжаться до тех пор, пока не будет полностью извлечен весь файл.
Проблема в том, что метод компонента, который читает из файла, выполняет цикл, который блокирует. Значит, для одновременного чтения из структуры данных, в которую он пишет, потребуется использование дополнительных потоков, верно? Я слышал, что создание новых потоков в веб-приложении - потенциально опасный ход, и что следует использовать пулы потоков и т. Д.
Может ли кто-нибудь рассказать об этом?
Обновление: Я попробовал несколько разных вещи без везения. Но мне удалось заставить его работать, создав отдельный поток
для запуска моего цикла блокировки, в то время как основной поток можно использовать для чтения из него всякий раз, когда обрабатывается запрос AJAX. Есть ли хорошая библиотека, которую я мог бы использовать, чтобы сделать что-то подобное, которое по-прежнему дает JSF некоторый контроль жизненного цикла над этим потоком
?