1
편집 : 아래 @maress answer에 대한 응답으로 질문을 편집했습니다.자바 비동기 서블릿 : 특정 이벤트 대기
Java (async enabled)의 웹 서비스가 있는데,이 서비스는 호출 될 때 다른 서비스를 비동기 적으로 호출합니다. 내 컨트롤러에서 나는 이것을 가지고있다 :
private boolean receivedEvent = false;
private final Object SYNC = new Object();
public Callable<String> doStuff()
{
callSomeAsyncFunction();
return new Callable<String>()
{
@Override
public String call() throws Exception {
synchronized (SYNC)
{
while (receivedEvent == false)
{
SYNC.wait();
}
receivedEvent = false;
System.out.println("RETURN");
return "ok";
}
}
};
}
public void onMyEvent(MyEvent event)
{
synchronized (SYNC)
{
receivedEvent = true;
System.out.println("RECEIVED");
SYNC.notify();
}
}
EDIT : 알림이 결코 통과되지 않는다. System.out.println ("RETURN")은 호출되지 않습니다. 이벤트가 수신 중입니다 ('수신 됨'이 표시됨).
이제는 callSomeAsyncFunction()
의 실행이 끝날 때까지 기다리고 싶습니다. 완료되면 처리기 public void onMyEvent(MyEvent event)
에서 이벤트를 트리거합니다.
제안 사항? 내 접근 방식이 전혀 이해가되는지 확실하지 않습니다.
Thx, 이제 오류는 발생하지 않지만 알림이 작동하지 않습니다. 나는 결코 '돌아 오는'ok '에 도달하지 않는다;' –
아마도 callSomeAsyncFunction()이 onMy/evnt (MyEvent) 함수를 호출하지 않기 때문일 수 있습니다. – maress
있습니다. 나는 컨트롤 - 로그 온통있다 : –