【问题标题】:how to handle cron response in google web toolkit, running on google app engine如何处理谷歌网络工具包中的 cron 响应,在谷歌应用引擎上运行
【发布时间】:2012-04-13 20:41:36
【问题描述】:

我使用 google 上的教程创建了一个简单的 google webtoolkit 项目,并将其部署在 google 应用引擎上。 我在 onModuleLoad() 中为客户端的 rpc 服务操作创建了一个测试按钮:

public void onModuleLoad() {
    // Listen for mouse events on the test Cron button.
    cronTestButton.addClickHandler(new ClickHandler() {
    public void onClick(ClickEvent event) {
        calculateStockData();
    }
    });
}

calculateStockData() 函数将创建服务并在服务器上执行 calculateStockData(callback) 函数,该函数将返回一个简单的 StockData 对象。

private void calculateStockData() {
    // Initialize the service proxy.
    if (stockPriceSvc == null) {
        stockPriceSvc = GWT.create(StockDataService.class);
    }

    // Set up the callback object.
    AsyncCallback<StockData> callback = new AsyncCallback<StockData>() {
        public void onFailure(Throwable caught) {

        }

        public void onSuccess(StockData result) {
            updateTable(result);
        }
    };
    // Make the call to the stock price service.
    stockPriceSvc.calculateStockData(callback);
}

所以在我的 web.xml 文件中我定义了一个服务:

<servlet>
<servlet-name>stockDataServiceImpl</servlet-name>
    <servlet-class>
    com.google.gwt.sample.stockwatcher.server.stockdata.StockDataServiceImpl
    </servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>stockDataServiceImpl</servlet-name>
<url-pattern>/stockwatcher/stockPrices</url-pattern>
</servlet-mapping>

当我使用 cron 测试按钮执行代码时,我在 onSuccess 成功时收到 StockData 对象作为来自服务的响应,并在 updateTable() 函数中更新 gwt flexTable。

问题是我想在 gwt 小部件上执行相同的更新操作,以响应通过 cron 作业执行的 calculateStockData() 服务函数。

因此,在我将以下内容添加到我的 cron.xml 之后,cron 作业正在正确执行 calculateStockData() 函数:

<cron>
    <url>/stockwatcher/stockPrices</url>
    <description>Get stock prices every 5 minutes</description>
    <schedule>every 5 minutes synchronized</schedule>
</cron>

但我不知道如何设置一个监听器来处理来自客户端 cron 作业执行的响应。 有人可以帮忙吗?如果需要更多信息,请告诉我。

【问题讨论】:

    标签: google-app-engine gwt


    【解决方案1】:

    在 AppEngine 上,您可以使用 Channel API 将数据从服务器推送到客户端(在客户端代码上使用 gwt-gae-channel 连接到通道)。

    否则(并且过于简单化),您必须将数据存储在服务器上并让客户端定期轮询新数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-22
      • 2011-08-21
      • 2012-02-09
      • 1970-01-01
      • 1970-01-01
      • 2011-10-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多