RemoteServiceServlet和RemoteService有什么区别?

时间:2012-11-14 03:34:18

标签: java-ee gwt

我知道第一个是一个类,第二个是接口,但重点是, 为什么客户服务应扩展 RemoteService ,而 ServiceImpl 类扩展 RemoteServiceServlet

那么幕后真的是什么?!

2 个答案:

答案 0 :(得分:5)

你想比较苹果和橘子。请阅读docs并制作任何简单的演示project,以便清楚地了解这些概念。

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映射,创建异步接口,调用并在生成的回调中处理结果,为实例类实现接口SerializableIsSerializable这是通过RPC。

答案 1 :(得分:3)

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

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