除了轮询服务器之外,有谁知道如何在 GWT 中监视长时间运行的服务器端进程?我们需要在服务器上进行一些耗时、多步骤、I/O 密集的处理,如果能在浏览器中显示此处理的进度就太好了。
最佳答案
这在 GWT 中相当容易处理。
长时间运行的进程要么由 GWT RPC 调用触发,在这种情况下您有入口点,要么没有入口点,在这种情况下您需要手动启动它。
请记住,GWT RPC 调用是异步的,因此不需要立即返回。您需要像 checkStatus()
这样的 RPC 调用。所以你可以做这样的事情:
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() 返回。它可以因为作业已完成或只是作业状态更新而返回。以上将继续循环,直到设置作业状态完成标志。
关于java - GWT 中的流程监控,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/409619/