我使用谷歌上的教程创建了一个简单的google webtoolkit项目,并将其部署在谷歌应用引擎上。 我在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(回调)函数,该函数将返回一个简单的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作业执行的响应。 任何人都可以帮忙吗?如果需要更多信息,请与我们联系。
答案 0 :(得分:1)
在AppEngine上,您可以使用Channel API将数据从服务器推送到客户端(使用客户端代码上的gwt-gae-channel连接到频道)。
否则(并且过于简化),您必须将数据存储在服务器上,并让客户定期轮询新数据。