2013-03-20 3 views
0

배경 : 클러스터 된 환경에서 서버를 시작하는 동안 외부 시스템에 한 번만 구독하는 방법이 필요합니다. 지금까지 우리는 ApplicationLifecycleListener를 사용하여 구독을 실행하고있었습니다. 우리 코드에서는 구독을하기 위해 승자 노드를 찾으려고했으나 어떤 이유로 그것이 작동하지 않고 4 명이 모두 요청을 보냈습니다. (코드는 Weblogic 8.1로 작성되었습니다) 이제 weblogic 11g으로 마이그레이션 한 후 트릭을 수행 한 SingletonService를 발견했습니다. 불행하게도 우리는 애플리케이션을 로컬에서 개발할 때 비 클러스터 환경에서 테스트 할 때 사용할 수 없으므로 Singleton Service가 작동하지 않습니다.서버 시작 중에 클러스터에서 코드를 한 번 실행하는 방법 및 비 클러스터 환경에서도 작동합니다.

내 질문 : 응용 프로그램이 시작된 후 SingletonService를 등록하는 방법이 있습니까? ApplicationLifecycleListener에서 우리가 클러스터에 있다는 것을 발견합니까? 그렇지 않다면 문제를 해결하는 방법에 대한 제안이 있습니까?

+0

, 싱글 싱글 안 : 여기

간단한 예입니다? 그것이 4를 위해 작동하는 경우에, 1을 위해 아직도 작동해야한다. 또는 나는 질문을 오해 할지도 모른다. – Thihara

답변

0

시작 클래스를 사용하고 4 개 모두 대신 하나의 시스템에만 타겟팅 할 수 있습니까? 서버의 클래스 경로에 시작 클래스를 추가해야합니다. 웹 로직 콘솔의 "환경"에서 시작/종료 클래스를 볼 수 있습니다. 에 관계없이 얼마나 많은 서버 실행의 난 그냥 여기 추측하고있어 http://buttso.blogspot.com/2009/09/weblogic-server-startup-and-shutdown.html

+0

나는 동일한 문제점으로 만난다. SingletonService 인터페이스를 구현하여 시작 클래스를 싱글 톤으로 만들고 싶습니다.하지만 activate() 및 startup() 메서드를 사용하면 코드를 넣어야하기 때문에 두 인터페이스의 구현이 문제에 의해 증가합니다. –