2013-07-19 6 views
2

WAR (또는 EAR)이 배치되고 어플리케이션이 사용자에게 제공되기 전에 Geronimo/Tomcat 클러스터에서 한 번만 비즈니스 로직을 실행해야합니다.Geronimo (또는 Tomcat) 클러스터의 시동 로직

내가 지금까지 해왔 던 방식은 임시 방편이며 내결함성이 아닙니다. 노드 1에서 구성 파일을 사용하고 "시작 노드"로 지정합니다. 응용 프로그램이 클러스터에서 시작되면 모든 노드가 해당 IP 주소를 데이터베이스에 기록한 다음 web.xml에서 시작시로드하도록 설정된 Servlet.init에서 잠자기 대기합니다. 시동 노드가 모든 예상 노드가 자신의 IP를 데이터베이스에 기록한 것을 보게되면 비즈니스 로직을 실행합니다. 시작 비즈니스 로직이 완료되면 데이터베이스에 확인 행을 작성하여 모든 노드에 다른 노드를 보냅니다.

모든 비 시작 노드는 주기적으로 (2 초마다)이 완전 클리어 신호에 대한 데이터베이스를 폴링하고,이를 볼 때 시작을 마치고 Servlet.init에서 돌아옵니다. 이 시점에서 모든 노드는 응용 프로그램을 사용자에게 정상적으로 제공합니다.

내 시작 논리가 아직 실패하지 않았지만 내 클러스터에서 시작 논리를 한 번만 실행하는 Java EE 표준 또는 강력한 타사 라이브러리 접근 방식이 있는지 궁금합니다. 감사!

편집 2013년 7월 21일을 : 내가 웹 로직 서버를 달성하는 데 유용 할 수 있습니다 정교한 시작 시설을 한 것으로 리콜 "초기화 한 번만 클러스터에"내 제로니모/톰캣 클러스터에서 수행 할 논리. 나는 파고 들었다. 예, WebLogic은 내가 원하는 것을 정확히 할 수있다. 이 주제에 대한 훌륭한 기사는 다음과 같습니다. http://developsimpler.blogspot.com/2012/03/weblogic-clusters-and-singleton-service.html

불행히도 WebLogic을 구입할 여유가 없습니다. 그렇다면 Geronimo 나 Tomcat (또는 다른 오픈 소스 Java EE 서버)과 비슷한 점이 있습니까? 아니면 같은 것을 달성하기 위해 사용할 수있는 제 3 자 라이브러리가 있습니까?

답변

1

분산 조정에는 사육사와 같은 도구가 있습니다.

나는 당신이 찾고있는 내가 다른 응용 프로그램을 시작하지 1 단일 "마스터"응용 프로그램이 대기하는 이유를 설명 할 수 있습니다, 이러한 유스 케이스를 이해할 수없는 무엇을위한 자바 EE 표준은 없다고 생각

?

+0

물론입니다. 내 특정 애플 리케이션에서, 시작 노드가 카산드라 클러스터가 시작될 때까지 기다려야한다. (제로 니모 클러스터의 각 노드는 카산드라 스토리지 노드이다.) Cassandra 링이 준비되면, 노드는 시동 노드가 코드가 기대하는 필요한 스키마 변경을 수행 할 때까지 대기합니다. – DWoldrich

+0

나는 사육사를 좋아하지만, 당분간은 내 기억의 발자국으로 내 리그에서 빠져 나온다. – DWoldrich

+0

이게 문제를 해결할 수 있습니까? http://www.datastax.com/drivers/java/apidocs/com/datastax/driver/core/Host.StateListener.html –