문제

서버를 폴링하는 것 외에 GWT에서 장기 실행되는 서버 측 프로세스를 모니터링하는 방법을 아는 사람이 있습니까? 서버에서 시간이 많이 걸리는 다중 단계, I/O 바운드 처리를 수행해야하며 브라우저 에서이 처리의 진행 상황을 표시하는 것이 좋습니다.

도움이 되었습니까?

해결책

이것은 GWT에서 처리하기가 상당히 쉽습니다.

장기 실행 프로세스는 GWT RPC 통화에 의해 트리거되며,이 경우 진입 점이 있거나 그렇지 않은 경우 수동으로 시작해야합니다.

GWT RPC 통화는 비동기식이므로 즉시 반환 할 필요가 없습니다. RPC 호출이 필요합니다 checkStatus(). 그래서 당신은 다음과 같은 일을 할 수 있습니다.

public class JobStatus {
  private boolean done;
  // other info
  // ...
}

public class JobStatusCallback<JobStatus> extends AsyncCallback {
    public final void onSuccess(JobStatus result) {
       if (result.isDone()) {
            done();
        } else {
            checkAgain();
        }
    }

    public final void onFailure(Throwable caught) {
       error(caught);
       checkAgain();
    }

    public void done() { // override
    }

    public void checkAgain() {
        service.checkStatus(this);
    }

    public void error(Thorwable t) { // override
    }
});

그리고 RPC 서비스에서 :

void checkStatus(AsyncCallback<JobStatus> callback);

서버는 checkstatus ()에서 반환하는 데 원하는만큼 오래 걸릴 수 있습니다 (이유 내). 작업이 완료되거나 작업 상태 업데이트만으로 반환 할 수 있습니다. 위의 작업 상태가 설정 될 때까지 위의 내용은 계속 반복됩니다.

다른 팁

프로세스에 달려 있다고 생각하지만 데이터 스트리밍과 같은 작업을 수행하려면 Server Push (또는 Comet) Technic.gwt를 사용하여 혜성 구현을 지원할 수 있습니다. Google GWT+Comet 또는 GWT+Comet+Tomcat, "Google Web Toolkit Applications"책 (GWTAPPS.COM)에서 Comet 및 GWT에 대해 읽었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top