2012-11-12 2 views
0

전체 애플리케이션 수명주기 동안 지속되는 내구성이 뛰어난 jcr 세션을 만드는 방법이 있습니까? 배경은 들어오는 모든 이벤트에 대한 내보기를 업데이트하는 JCR EventListener에이 세션을 사용하려는 것입니다. 그러므로이 청취자는 항상 내가 생각하는 세션과 연결되어야합니다.내구성있는 jcr 세션 만들기

답변

1

예, 실제로는 일반 세션을 만들고 이벤트 리스너를 등록하는 데 사용할 수 있으며 필요한만큼 오래 유지할 수 있습니다.

실제로 이벤트 리스너는 리스너 등록에 사용 된 세션이 아직 살아있는 동안에 만 이벤트를 알립니다. 물론, 오래 지속되는 세션은 저장소가 종료되는 것을 막을 수 있으므로 응용 프로그램이나 서비스가 종료 될 때 항상 세션에서 로그 아웃하십시오.

한 가지 가장 좋은 방법은 청취자에게 가능한 한 적은 작업을시키는 것입니다. 리스너는 비동기 적으로 호출됩니다 (리스너가 완료 될 때까지 변경 사항을 완료하기 위해 대기하지 않음을 의미). 이는 완료 될 때까지 오랜 시간이 걸릴 경우 리스너가 자원 문제를 일으킬 수 있다는 것을 의미합니다. 따라서 작업이 간단하지 않은 경우 작업을 대기열에 제출하고 별도로 대기열을 처리하여 가능한 한 빨리 스레드에서 내려야합니다.

또 다른 우수 사례는 수신자가 이 아닌 경우이 콘텐츠를 등록하는 데 사용 된 것과 동일한 세션을 사용하여 읽거나 쓰는 것입니다. JCR 세션은 스레드로부터 안전 할 필요는 없으며 대부분의 구현은 do not implement concurrency입니다. 즉, 콘텐츠를 읽는 것만으로도 여러 스레드에서 안전하게 사용할 수 없음을 의미합니다. 일부 구현에서는 세션 are thread safe을 보장하지만, 해당 구현에 갇혀 있어야하거나 필요로하지 않는 한 해당 특성에 의존하지 않는 것이 좋습니다.)

요약하면 청취자가 어떤 작업을해야한다면, 내려주세요. 호출 스레드 및 별도의 세션을 사용하여 내용을 읽거나 업데이트하십시오.