java - GWT 中的流程监控

标签 java gwt

除了轮询服务器之外,有谁知道如何在 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/

相关文章:

java - 复制文件时可能出现哪些异常?

java - 哪个使用更多内存,一个 Class 对象还是该类的一个实例?

java - GWT + GAE 数据存储 key 和文本 Java 错误

java - slider 左上角的文本框是什么?

gwt - 了解 Spring Roo 为 GWT 生成的实体代码

java - rJava 没有在 R 中加载

java - 在 IntelliJ Idea 中的 android 项目中创建 java 模块

java - Android 4.4 上的资源 $NotFoundException

java - GWT devmode netbeans - 错误

html - GWT - 如何在 DockLayoutPanel 中添加空格