1

我目前有一个 GWT 应用程序,它使用向我拥有的 servlet(使用and )RequestBuilde发送消息,并且我的 servlet(in and )“暂停”请求(这是通过使用 Servlets 3.0 规范完成的)并将其添加到队列中. 此外,我有一个守护线程,它在后台运行并在有新数据时“播放”请求。 这对我来说非常有用,除了我现在只是发送字符串并且我想利用 RPC 机制来发送对象。 我的问题是:如果我创建了扩展类, 我应该如何处理?POSTGETdoPostdoGet



myServiceImplRemoteServiceServletdoPostdoGet
我需要暂停我的请求以利用异步支持,这应该在哪里完成?我虽然可能会在课堂上调用this.getThreadLocalRequest()我的 RPC 方法中的方法,myServiceImpl但我不确定这会有多明智。
我不确定我什至了解 GWT 如何处理来自该异步接口客户端的调用。它是否会调用doGetservlet 的示例并确保它调用所需的 RPC 方法?
如果我把事情弄得一团糟,我很抱歉,只是我找不到更详细的技术信息来了解这个 RPC 业务是如何运作的。
感谢任何借出的手
Ittai

4

2 回答 2

5

要理解 RPC,请忘记 POST 和 GET,它的工作方式是不同的(从编程的角度来看。在内部它确实使用它,但你看不到或不需要理解它,除非你想做一些奇特的事情)。一个好的起点是 RPC 是 GWT 文档:http ://code.google.com/webtoolkit/tutorials/1.6/RPC.html

给你一个总结。使用 RPC 时,您的 servletmyServiceImpl除了myService扩展RemoveServiceServlet. 这些方法将您想要发送到服务器的数据作为参数获取。

在接口旁边,myService您需要创建一个myServiceAsync接口(两个接口都应该在客户端子包中)。这个myServiceAsync接口应该包含与接口相同的方法,myService除了每个方法返回void并且有一个额外的最后一个参数AsyncCallback callback

在您的客户端中,您需要检测 GWT 以通过 GWT.create 生成 RPC(有关详细信息,请参阅文档。

要使用 RPC,请在客户端代码中调用myServiceAsync接口上的方法,然后 GWT 负责将其发送到 servlet。然后,servlet 将使用您在客户端传递的参数调用匹配方法。这是异步完成的。因此客户端直接从调用中返回。

当服务器将结果发回时,您传递的回调将myServiceAsync被使用或OnError调用OnSuccessOnError如果服务器端的方法抛出错误,否则OnSuccessOnSuccess将以您在 servlet 实现的方法中返回的返回值作为参数。

于 2009-10-11T16:18:48.393 回答
1

我认为我当时的主要误解与 GWT RPC 建立在 servlet 机制(内部)上这一事实有关,因此在当时尝试将这种机制与异步 servlet 一起使用是不可能的,因为 GWT RPC 是建立在 servlet 上的2.5(再次,当时)。

于 2012-11-11T07:35:13.457 回答