jsf에서 프라임 스 페이스로 몇 가지 기본 푸시 기능을 구현하려고했습니다. 나는 카운터 예제 인 http://www.primefaces.org/showcase-labs/push/counter.jsf을 사용했다. 기본적으로 공유 카운터를 증가시키는 버튼입니다. 이 예제를 실행하는 경우 난 항상이 오류 :JSF "Mac에서 오류를 확인하지 못했습니다!"
ERROR: MAC did not verify!
나의 이해는 맥이 모든 세션을 생성하고 소스가 (내가 생각하는) 변경되지 않았 음을 확인하기 위해 각각의 수신 메시지에 따라 선택되어 있는지입니다. 나는이의 원인을 찾을 수 없어와 같은 다른 스레드에서 보았다 :
ERROR: MAC did not verify! PrimeFaces
JSF: Mojarra 2.1 to 2.2 migration causing ViewExpiredException
불행하게도 이러한 해결되지 내 문제. 둘 다 내가 얻지 못하는 ViewExpiredException에 의해 발생하는 것 같습니다. 나는 그것을 중지 발견 한 유일한 것은 web.xml 파일에 클라이언트에서 서버로 상태 저장 방법을 변경하는 것입니다 : 더 이상 공유이 카운터를 수행 할 때 그러나
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
하지만 사용자 당 것으로 보인다, 그건 내가 원하는 바가 아니야. 나의 궁극적 인 목표는 chatroom을 구현하는 것인데, 대부분 chatroom을 구현하는 것이지만 바로 지금은 확장 성이 좋지 않은 짧은 폴링을 사용한다. primefaces 푸시를 보았을 때 이상적이라고 생각했지만 사용하는 데 어려움을 겪어 왔습니다.
여러 웹 서버 (Tomcat, Jetty 및 Glassfish)를 사용해 보았으며 다른 버전의 JSF (Mojarra) 및 primefaces (3.4 및 4.0) 버전을 사용해 보았습니다. 여러 브라우저와 여러 대의 컴퓨터에서 테스트 해 보았습니다. 때때로 오류가 발생하기 전에 카운터를 몇 번 증분 할 수 있습니다. 때로는 바로 발생합니다. 예외 나 서브 디렉토리 오류가 발생하지 않으며 모든 것이 컴파일됩니다. 이전에 다른 프로젝트에서이 오류가 발생했음을 언급하고자하지만 서버를 다시 시작한 후에 사라졌습니다. primefaces를 사용하면 항상 발생합니다. 어떤 도움을 주시면 감사하겠습니다.
편집
MAC 오류를 피하기 위해 web.xml 파일에서 서버에 저장 상태를 떠나, 내가 공유 카운터가 동일한 시스템에서 브라우저별로 작동 것으로 나타났습니다. 여러 개의 탭이나 창을 가지고있는 경우 하나의 카운터를 모두 업데이트하면 모든 것이 업데이트됩니다. 브라우저 간에는 작동하지 않지만 파이어 폭스의 카운터 변경은 크롬이나 IE 또는 다른 방식으로 반영되지 않습니다. 별도의 컴퓨터 두 대에있는 경우에도 반영되지 않습니다. 이것이 도움이되는지 나는 모른다. 그러나 나는 그것을 언급 할 것이라고 생각했다.
예에서 콩은 세션이 응용 프로그램 범위에 내가 그것을 변경 범위는 것을 알아 차리지 후 편집
. 물론 세션 범위는 모든 브라우저가 자체 복사본을 가지고 있음을 의미합니다. 이제 변경 사항은 브라우저와 컴퓨터에 반영됩니다. 원래의 문제로 돌아가서, 나는 여전히 서버에 저장 상태를 변경하면 MAC 오류를 수정하는 이유와 그 의미가 무엇인지 알고 싶습니다. 이제는 서버가 클라이언트가 아닌 각 세션의 뷰 상태를 유지해야한다고 가정합니다. 서버에 저장 상태를 설정하면 읽은 내용에서 만료 된 예외보기를 확인할 수 없거나 사용자가 이미 너무 많은 경우보기를 만들지 못하도록하는 것이 맞습니까?
복제본마다 클라이언트 상태 저장 비밀 키를 구성해야합니다. 또는 서버 클러스터에서 실행중인 경우 고정 노드를 사용하고 있는지 확인해야합니다. – BalusC