-1
상황을 잡는다 :대기 스레드는 이벤트
public void makeCall() {
Call call = CallFactory.createCall();
CallListener listener = new CallListener();
call.addListener(listener);
call.connect();
}
:
@Transactional
public void createCall() {
callManager.makeCall();
}
하는의 그 콜 매니저는 다음과 같은 방법을 포함 가정 해 봅시다 : 나는 예를 들어 무효 방법, 를 실행 트랜잭션 방법을 가지고 connect() 메서드가 예외를 throw하지 않으면 makeCall() 메서드가 성공적으로 완료됩니다.
이제 리스너에서 우리는 예를 들어, 핸들러 방법이 있습니다
public void callTalking(AnyEvent event) {
//some logic
}
주요 질문은 : 우리의 거래 방법 createCall() 리스너까지이 callTalking에서 이벤트를 잡는다를 개최 할 수있는 아름다운 방법이() 시간 제한을 사용하지 않고?
편집 중요 정보는, 내가 (곧 말) gigaspace 폴링 이벤트를 사용하고 있음을 영원히 성공적인 거래 후 데이터베이스에서 오브젝트를합니다.
로직이 스레드로 분할되어 표시되지 않으므로 기다릴 필요가 없습니다. 그러나 다른 쓰레드가 있다면 그들 사이에서 동기화를 사용할 수 있습니다 ('Object # wait()'와'Object # notify()') –
가장 큰 문제는 다음 상황입니다. 응용 프로그램이 성공적으로 전화를 걸었지만 운영자가 전화를받지 않았고 응용 프로그램이 손상되고 통화가 끊어졌습니다. 그러나 트랜잭션이 성공으로 표시되어 롤백이 발생하지 않았습니다. –