代码之家  ›  专栏  ›  技术社区  ›  Phil

GWT中的过程监控

  •  1
  • Phil  · 技术社区  · 17 年前

    除了轮询服务器,有人知道如何监视GWT中长期运行的服务器端进程吗?我们需要在服务器上执行一些耗时的、多步骤的、I/O绑定的处理,在浏览器中显示此处理的进度会很好。

    2 回复  |  直到 17 年前
        1
  •  3
  •   cletus    17 年前

    这在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()返回所需的时间(在合理范围内)。它可以返回,因为作业已完成,或者只是作业状态更新。在设置作业状态完成标志之前,上述操作将继续循环。

        2
  •  0
  •   Bamdad Dashtban Bamdad Dashtban    17 年前

    GoogleGWT+Comet或GWT+Comet+Tomcat,我在“GoogleWebToolkit应用程序”一书(gwtaps.com)中读到了Comet和GWT。