В нашем приложении Seam у нас есть раздел опроса, который поддерживает активные разговоры до тех пор, пока страница будет открыта в окне браузера/вкладке, чтобы разрешить пользователь может работать с несколькими экземплярами объектов одновременно, без истечения цепочки на «неактивных» страницах, пока они заняты другим.Проверьте, используется ли сеанс шва, не получая блокировки.
Все работает нормально, но время от времени мы получаем страшный вызов параллельного вызова в цепочку, когда поток опроса отправляет запрос, а другой (длительный) выполняется. Мы установили значение параллельного запроса-тайм-аута довольно высоким (20 секунд), и большую часть времени страницы возвращаются менее чем за 2 секунды. Однако бывают ситуации, когда пользователи имеют дело с большими объемами данных (и они готовы дождаться загрузки этих страниц, независимо от того, сколько времени потребуется), поэтому мы не можем многое сделать с точки зрения общей оптимизации.
Что мы ищем - это способ проверки (в центральном фильтре, который проходит все запросы), если есть блокировка в данном разговоре, не пытаясь его приобрести (чтобы не запускать исключение, если там уже есть замок). У нас есть средства различать, имеем ли мы дело с одним из этих фоновых потоков (мы делаем это для управления сеансом, поэтому они расширяют разговоры, но не сеанс, в целом). Если мы сможем определить, что разговор уже используется, мы могли бы просто пропустить обработку этого потока опроса, так как его услуги не понадобятся в это конкретное время (разговор используется, поэтому без угрозы истечения срока действия).
TLDR: проверить, есть ли блокировка на шов разговора, не пытаясь получить к нему доступ (что может привести к срабатыванию одновременный вызов разговора исключения)
Все указатели, предложения, очень ценятся.
Я знаю, что есть способ поставить в очередь все запросы, не уверен, что это будет действительный подход для вас. Я не могу сейчас вспомнить, как это сделать. – Tiago
Как вы проводите опрос на разговоры? Очередь может быть действительным подходом, как говорит @reistiago. –