为啥 GWT RPC 需要同步接口?

Posted

技术标签:

【中文标题】为啥 GWT RPC 需要同步接口?【英文标题】:Why do you need synchronous interface for GWT RPC?为什么 GWT RPC 需要同步接口? 【发布时间】:2014-11-19 11:22:26 【问题描述】:

我想知道为什么在使用 GWT RPC 时还需要定义一个同步接口,因为所有调用都是异步的 (http://www.gwtproject.org/doc/latest/DevGuideServerCommunication.html)?

我没有看到同步接口在哪里使用!

即为什么我们不能在我们的服务实现类中实现同步接口?

【问题讨论】:

【参考方案1】:

来自文档:

http://www.gwtproject.org/doc/latest/DevGuideServerCommunication.html#DevGuideCreatingServices

此同步接口是您的服务规范的最终版本。此服务在服务器端的任何实现都必须扩展 RemoteServiceServlet 并实现此服务接口。

package com.example.foo.server;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.example.client.MyService;


public class MyServiceImpl extends RemoteServiceServlet implements
    MyService 

  public String myMethod(String s) 
    // Do something interesting with 's' here on the server.
    return s;
  

提示:无法直接从客户端调用此版本的 RPC。你必须创建一个异步的

【讨论】:

这是否意味着我的服务实现正在与同步接口而不是异步交互?但调用是异步的?通过阅读 gwt 项目主页上的文档,我无法完全理解它。 我找到了这篇关于 RemoteService 是什么的 MarkerInterface 的文章,但它没有说明 RemoteService 的使用方式和用途以及与 GWT 的连接:javarevisited.blogspot.dk/2012/01/… 同步接口做了两件事:一是在服务器端使用,二是触发生成rpc代理。 同步类和异步类的联系在哪里? 客户端使用异步接口,服务端使用同步接口,GWT用来识别代码生成器。同步总是扩展 RemoteService,它会告诉 GWT 使用 RpcServiceGenerator。

以上是关于为啥 GWT RPC 需要同步接口?的主要内容,如果未能解决你的问题,请参考以下文章

在 GWT 中,为啥方法不应该返回接口?

如何修复多项目 GWT 设置中的 RPC 错误 IncompatibleRemoteServiceException?

GWT:RPC 失败(StatusCodeException)

Ext-GWT TreeGrid 间接调用了 GWT-RPC 回调?为啥?

GWT 通过 RPC 发送类型 OBJECT

使用 RPC 服务创建 GWT.create 的目的是啥?