2014-11-18 2 views
1

RemoteCommand caling bean 메소드 시간 지연에 성능 문제점이 있습니다.

사용 primefaces 4.0, 패널Primefaces RemoteCommand가 Bean을 호출 할 때 시간 지연이 발생했습니다.

<p:outputPanel id="runtime_panel" autoUpdate="true" /> 

에 런타임 부하에서 우리의 XHTML 페이지 된 div의 상당한 양의 일부 SelectOneRadio 컨트롤 setOnchange을 통해 청취자() 메소드를 가지고있다. 그들은 디자인 타임에 XHTML 페이지에 정의되어 RemoteCommand를 호출 :

<p:remoteCommand name="ourRemoteCommand" 
actionListener="#{bean.someMethod}" update="runtime_panel" 
/> 

bean.someMethod의 목적은 표시하거나 아약스을 통해 우리의 페이지에서 특정 GUI 컨트롤을 숨기는 것입니다. Bean 범위가 요청되었습니다.

문제는 클라이언트에서 bean.someMethod을 호출 할 때 일정한 시간이 지났습니다. 제 테스트에서 갑자기 javascript가 응답하지만 갑자기 서버 측에서 중단 점을 통해 bean.someMethod을 잡으면 약 2 초가 걸렸습니다.

또한 빈 위상 범위를 세션 범위로 변경하여 시공 지연을 없애고 있지만이 이음새는 문제가 아니며 시간 지연을 해결하지 못했습니다. "runtime_panel"요소의 소량이있는 경우

, 내가 어떤 지연, 통지를하지 않았고 중단 점은 "bean.someMethod"즉시 중지합니다. 컨트롤 수와 응답 시간 사이에는 상호 작용이 있습니다.

나는 또한 다른 양식을 만들 때 페이지의 시작 부분에 RemoteCommand를 자신의 양식으로 추가한다.

따라서 서버 측 코드도 즉시 실행됩니다. 그러나 "outputPanel"에 gui 요소가 많은 경우 서버 측에서도이 RemoteCommand "rcgg"와 관계가 없더라도 시간 지연은 입니다. 이상한.

또한 여러 RemoteCommand의 arributes (

immediate="false" async="true" partialSubmit="true" ignoreAutoUpdate="true" process="@none" global="false" 
update="@none" 

)로하지만 너무 성공하지 테스트.

나는이 "bean calling lag"을 제거하는 방법을 모른다.
정말 도움이 필요합니다.

답변

1

보통 p:remoteCommand[email protected]을 사용해야합니다. 그렇지 않으면 h:form 및 그 구성 요소 전체를 제출해야합니다.
따라서 p:remoteCommand을 별도로 보관하는 것이 더 좋습니다 h:form.

이 방법으로도 문제가 해결되지 않으면 ManagedBean에서 RequestContextupdate 메서드를 사용하여 구성 요소를 업데이트 할 수 있습니다.

RequestContext.getCurrentInstance().update("COMPONENT_ID_TO_UPDATE") 
관련 문제