2

我知道第一个是一个类,第二个是一个接口,但关键是,为什么客户端服务要扩展RemoteServiceServiceImpl类扩展RemoteServiceServlet

那么幕后究竟是什么?!

4

2 回答 2

5

您正在尝试比较苹果和橙子。请阅读文档并制作任何简单的演示项目以清楚地理解这些概念。

RemoteService是客户端的 RPC 接口应该扩展的接口。RemoteServiceServlet是服务器上 RPC 服务实现的 servlet 基类。它反序列化来自客户端的请求并序列化传出的响应。

要使用 RPC,您需要在client包中创建和定义自己的接口应该扩展RemoteService接口并指定服务器应该实现的方法。

package com.yourproject.client;

import com.google.gwt.user.client.rpc.RemoteService;

public interface CustomInfoService extends RemoteService {
    Info getInfo(String infoId);
}

然后你需要在服务器端提供这个接口的实现。这应该是server包中的一个 servlet,它扩展了RemoteServiceServlet并实现了CustomInfoService.

package com.yourproject.server;

import com.yourproject.client.CustomInfoService;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;

public class InfoServiceImpl extends RemoteServiceServlet implements CustomInfoService {
   public Info getInfo(String infoId) {
       //implementation (for example getting info from database)
   }
}

确保正常工作,您还需要设置 servlet 映射,创建异步接口,调用它并在生成的回调中处理结果,为通过 RPC 传递的实例类实现接口SerializableIsSerializable 。

于 2012-11-14T16:09:53.547 回答
3

RemoteService是一个标记接口,它允许 GWT 找到您的 RPC/RPCAsync 接口(以验证它们/与您的实现建立链接)。

RemoteServiceServlet是接收来自客户端的调用、反序列化参数、调用您的方法、序列化您的方法返回的内容(异常或返回的对象)并将其发送给客户端的 servlet。

于 2012-11-14T09:15:34.447 回答