구매 주문을 처리하는 응용 프로그램을 작성 중입니다.
이 응용 프로그램은 EJB1을 기반으로하며 IBM Websphere에서 실행됩니다.
해결해야 할 시나리오가 있습니다.EJB 2 세션 빈에서 Ashton 싱글 톤 기능
주문 묶음을 처리하는 Stateless Session Bean
이 있습니다 (일반적으로 주문 수량은 약 5K입니다). 이 기능을 동기화하려고합니다.
즉, 사용자 중 하나가 주문 처리를 활성화하면 첫 번째 처리가 완료 될 때까지 다른 사용자가 프로세스를 시작할 수 없어야합니다.
일부 제약으로 인해이를 EJB3으로 업그레이드 할 수 없습니다.
이 문제를 효과적으로 해결할 수있는 방법이 있습니까?
제공된 솔루션이 코드 변경을 덜 필요로하기를 기대합니다.
아니요 다중 서버 인스턴스가 없습니다. 오직 하나. 또한 주문과 관련하여 처리되지 않은 주문으로 DB에 저장됩니다. 관리자는 하루에 한 번 또는 며칠에 대량으로 처리합니다. 처리는 실제로 한 테이블에서 다른 테이블로 레코드를 이동시킵니다. 하지만 EJB 메소드를 호출하는 버튼을 클릭하면됩니다. 그것의 조금 시간이 걸리는 과정은 3-4 분이 걸릴 수 있습니다. 내가 피하기를 원하는 것은 관리자가 시작한 프로세스가 진행될 때까지 프로세스를 시작하는 다른 관리자 사용자입니다. –
그래서 무 상태 빈에 정적 필드를 추가 한 다음 메서드에서 동기화하는 것만으로도 트릭을 수행해야합니다. 'private static final Object syncObj = 새로운 객체();' – Tracy