2009-08-31 3 views
2

링크를 누르면 창 팝업이 열립니다. java.util.List를로드하는 세션 관리 Bean을 가져 오는 중입니다. 목록을로드하는 데 몇 초가 걸립니다.JSF 동시성 문제

링크를 두 번 클릭하면 동시에 수정 예외가 발생합니다. 페이지가 세션 모드이고 첫 번째 요청이 여전히 목록을로드하고 있기 때문에 두 번째 요청이 끝나기 전에 목록을 업데이트하려고합니다.

I 손

1)의 두 가지 용액을 도입하는 한 동기 블록

질문 : 동기 블록을 도입하는 멀티 스레드 환경에서 성능 문제에 이르게?

2) javascript를 클릭하면 링크가 비활성화됩니다.

문제 : 일단 팝업이로드되면 자바 스크립트의 상태를 복원해야하기 때문에 좋은 옵션이 아닙니다. 팝업 창이 비정상적으로 종료되면 링크가 영구적으로 비활성화 될 수 있습니다.

이 문제에 대한 다른 해결책이 있습니까?

답변

2

옵션 1을 선택하고 싶습니다. 세션의 어떤 항목이나 세션 빈에서 동기화하십시오. 단일 서버 환경에서는 꽤 안전해야하지만 끈끈한 세션을 사용하지 않는 클러스터에서는 더 나은 싱글 톤을 찾아야합니다.

특정 세션 빈에 대한 각 사용자 세션에 대해 동기화 할 때 성능이 영향을 미치지 않아야하며, 경합이 없다면 비용을 생각할 가치가 없습니다.

1

팝업 해결책이 닫힐 때까지 POPUP 창 모달 창을 사용하면 부모 창이 에 흐려 지거나 흐리게 표시됩니다. 자바 스크립트 코드를 검색하십시오.

+0

Richfaces는 이미 모달 팝업 (modalPanel)을 제공합니다. 기타 librairies도 그러한 구성 요소를 제공 할 수 있습니다. – romaintaz

+0

모달 창을 사용할 수 없습니다.! ; ( – Madhu

0

두 번째 옵션을 선택하십시오.

+0

) 선택의 묘사는 더 나은 선택이었을 것입니다! 왜 2 번째 옵션을 제안하는지 명확하지 않습니다. – Iravanchi

0

당신이 부자면의 A4J 라이브러리를 사용하고 여기에 A4J를 팝업 링크

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

를 다시 쓰게 할 수 풍부한 얼굴을 사용하는 경우는 JSF 풍부한 얼굴 라이브러리 아약스이다. 자세한 내용은 http://livedemo.exadel.com/richfaces-demo/richfaces/support.jsf;jsessionid=B9DFBAF3AFD62C96B94EEC67FC4645A5?c=support&tab=usage 링크를 참조하십시오.