0
WebSphere 7 클러스터 환경 (각각 1 개의 서버가있는 2 개의 상자) 내에서 30 초마다 Java 메소드를 실행해야합니다. 동시성 문제를 피하면서이를 수행하기위한 최선의 방법은 무엇입니까?WebSphere 7에서주기적인 Java 태스크를 스케줄하는 방법은 무엇입니까?
몇 가지 추가 정보 : 오라클 데이터베이스에 정확히 한 번 트위스트 될 레코드가 있습니다. 두 배나 번쩍 거리면 나쁜 일이 일어날 것입니다.
public synchronized void BatchTwiddle() {
List myList = findRecordsToBeTwiddled();
twiddleRecords(myList);
}
public void twiddleRecords(myRecords myList) {
ListIterator<myRecord> myRecordsIterator = myList.listIterator();
while (myRecordsIterator.hasNext()) {
myRecordsIterator.next().twiddleRecord();
}
}
어떻게 (2 총)이 여러 서버에게이 연루 때 BatchTwiddle()는 30 초마다 호출받을 수 있나요 :
그래서 나는 이런 식으로 뭔가를 상상 해요? 하나의 서버에서 실행하는 것이 가장 좋습니다.지금까지 WebSphere Scheduler 개념을 사용하거나 ScheduledExecutorService를 사용하거나 EJB 타이머를 사용해 보았지만 아직 확실한 것은 없습니다.
'ScheduledExecutorService'의 문제점은 무엇입니까? – fge
@fge - 솔직히 모르겠습니다. 저는 Java에 충분히 익숙합니다. ScheduledExecutorService가 내 문제를 해결하는 것처럼 보이지만, 문제를 해결할 수있는 최선의 방법인지 아니면 큰 아키텍처 문제가 있을지는 알 수 없습니다. – john3103
'ScheduledExecutorService' Just Works (tm)에서 아키텍처 문제가 발생하는 이유는 없습니다. 다른 솔루션과 달리 OS 시간 변경에 민감하지 않습니다. – fge