JSF проблема параллелизма - PullRequest
       7

JSF проблема параллелизма

2 голосов
/ 31 августа 2009

Когда я нажимаю на ссылку, открывается всплывающее окно. У меня есть сеанс управляемого компонента, который загружает java.util.List. Для загрузки этого списка требуется несколько секунд.

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

У меня есть два возможных решения

1) введение синхронизированного блока

Вопрос. Введение синхронизированного блока приводит к проблемам с производительностью в многопоточной среде?

2) javascript для отключения ссылки после ее нажатия.

проблема: не очень хороший вариант, потому что нам нужно восстановить состояние javascript после загрузки всплывающего окна. Существует вероятность того, что ссылка будет отключена навсегда, если всплывающее окно завершится ненормально.

Есть ли другое решение этой проблемы?

Ответы [ 4 ]

2 голосов
/ 31 августа 2009

Я бы выбрал вариант 1. Синхронизировать что-либо в сеансе или с сессионным компонентом. В среде с одним сервером это должно быть довольно безопасно, но в кластере, который не использует липкие сессии, вам придется искать лучший синглтон.

Производительность не должна зависеть, так как вы будете синхронизироваться для каждого пользовательского сеанса для этого конкретного сессионного компонента, и если нет споров, о стоимости не стоит думать.

1 голос
/ 31 августа 2009

Одно альтернативное решение - сделать модальное окно POPUP означает, что родительское окно будет быть размытым / затененным до тех пор, пока всплывающее окно не закроется. поиск кода JavaScript.

0 голосов
/ 07 июня 2012

если вы используете расширенные лица, вы можете использовать библиотеку расширенных граней a4j и повторно создать всплывающую ссылку

<a4j:commandButton id="popupLinkId" onlick="window.open("popupLink");return false;"  reRender="popupLinkId" />

Здесь a4j - это библиотека ajax для библиотеки jsf richface. Для получения дополнительной информации см. Ссылку http://livedemo.exadel.com/richfaces-demo/richfaces/support.jsf;jsessionid=B9DFBAF3AFD62C96B94EEC67FC4645A5?c=support&tab=usage.

0 голосов
/ 31 августа 2009

Выберите второй вариант.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...