Сердцебиение при длительном запросе

Как я могу реализовать сердцебиение с помощью JSF 1.2, RichFaces 3.x, используя SEAM 2.x, который также работает во время длительного запроса, выполняемого пользователем?

В настоящее время у нас есть пульс (чтобы избежать тайм-аута сеанса) с использованием <aj4:poll action="#{bean.keepAlive}" ... />, который не работает во время длительных запросов на сервере. Использование собственного eventsQueue="heartbeat" позволяет отправлять требуемый пульс даже при выполнении долгосрочного запроса, но приводит нас к org.jboss.seam.ConcurrentRequestTimeoutException.

Мы также пытались использовать @Asynchronousв методе keepAlive.

У вас есть другое решение или намек на мою проблему? Спасибо. :)



person Thomas Zuberbuehler    schedule 01.02.2013    source источник
comment
Будет ли это работать, если вы переместите keepAlive в отдельный и автономный компонент? Таким образом, он может быть освобожден от проблемы параллелизма.   -  person drone.ah    schedule 01.02.2013
comment
Нет, это не работает. Проблема параллелизма поднимается SEAM. Может быть, мне нужно попробовать другой ScopeType?   -  person Thomas Zuberbuehler    schedule 01.02.2013
comment
Я не уверен, что это так просто. Более чистое решение могло бы состоять в том, чтобы запустить длительный процесс в фоновом режиме (асинхронно). Затем вы можете регулярно проверять состояние завершения и результаты, пока фоновая задача не завершится. Я думаю, что проблема, с которой вы столкнулись, заключается в том, что каждый запрос с этой страницы привязан к одному и тому же контексту. Если вы можете как-то запросить, не попадая в тот же контекст, это может сработать!   -  person drone.ah    schedule 01.02.2013
comment
Спасибо. Я последовал вашим предложениям, но, поскольку длительный запрос должен иметь доступ к текущему контексту, использование Asynchronous или потока не сработало.   -  person Thomas Zuberbuehler    schedule 06.02.2013
comment
Тем не менее, мы нашли решение, которое работает для нас. :)   -  person Thomas Zuberbuehler    schedule 06.02.2013


Ответы (1)


Мы решили нашу проблему с запуском сердцебиения в файле <iframe ...>. На самом деле я не сторонник использования фреймов, но в этой ситуации это чистое быстрое и грязное решение.

Мы по-прежнему используем <a4j:poll ...> в кадре.

person Thomas Zuberbuehler    schedule 06.02.2013