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