2013-10-30 2 views
0

WebSphere ApplicationServer 8을 사용하는 클러스터 환경에서 실행되는 JEE6 응용 프로그램에 문제가 있습니다. 검색 색인은 Lucene을 사용하여 UI에서 빠르게 검색하는 데 사용됩니다 (Lucene 사용). 새로운 데이터가 해당 DB 레이어에 도착한 후 다시 인덱싱됩니다. 이를 위해 우리는 애플리케이션에 JMS 메시지를 보내고 검색 색인은 새로 고쳐집니다. 메시지가 클러스터 구성원 중 하나에 만 도달하는 것이 문제입니다. 그래서 검색 색인 만 최신입니다. 다른 서버에서는 구식으로 남아 있습니다.하나의 서버에서만 JMS 메시지가 수신되었습니다.

검색 색인이 모든 클러스터 구성원에서 업데이트되도록하려면 어떻게해야합니까? 어떻게 든 모든 서버에서 메시지를받을 수 있습니까? 또는 더 좋은 방법이 있습니까?

답변

0

가능한 해결책을 찾았습니다. 일반적으로 대기열을 통해 전달되는 JMS 메시지는 클러스터 구성원 중 하나에게만 전달됩니다. EJB 타이머를 사용하여 모든 클러스터 멤버에게 정보를 얻는 방법을 찾았습니다. 비 지속성 타이머를 생성하면 모든 클러스터 멤버에서 콜백 메소드를 호출해야합니다. 이는 모든 클러스터 구성원에서 로컬 검색 색인을 다시 작성하는 편리한 방법 일 수 있습니다.

영속성 타이머가 클러스터에서 동기화되고 클러스터 구성원 중 하나에서만 실행되므로 비 지속성 ejb 타이머가 중요합니다.

+0

또한, 비 영구 타이머는 자동이어야하며 프로그래밍 방식이 아니어야합니다 (IBM 문서 (http://pic.dhe.ibm.com/infocenter/wasinfo/v8r0/index.jsp?topic=%2Fcom.ibm 참조). .websphere.nd.doc % 2Finfo % 2Fae % 2Fae % 2Ftejb_timerserviceejb_enh.html). 그렇지 않으면 동시에 모든 클러스터 구성원에서 실행되지 않습니다. – BJH

관련 문제