我目前有一个 GWT 应用程序,它使用向我拥有的 servlet(使用and )RequestBuilde
发送消息,并且我的 servlet(in and )“暂停”请求(这是通过使用 Servlets 3.0 规范完成的)并将其添加到队列中.
此外,我有一个守护线程,它在后台运行并在有新数据时“播放”请求。
这对我来说非常有用,除了我现在只是发送字符串并且我想利用 RPC 机制来发送对象。
我的问题是:如果我创建了扩展类,
我应该如何处理?POST
GET
doPost
doGet
myServiceImpl
RemoteServiceServlet
doPost
doGet
我需要暂停我的请求以利用异步支持,这应该在哪里完成?我虽然可能会在课堂上调用this.getThreadLocalRequest()
我的 RPC 方法中的方法,myServiceImpl
但我不确定这会有多明智。
我不确定我什至了解 GWT 如何处理来自该异步接口客户端的调用。它是否会调用doGet
servlet 的示例并确保它调用所需的 RPC 方法?
如果我把事情弄得一团糟,我很抱歉,只是我找不到更详细的技术信息来了解这个 RPC 业务是如何运作的。
感谢任何借出的手
Ittai
2 回答
要理解 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
调用OnSuccess
。OnError
如果服务器端的方法抛出错误,否则OnSuccess
。OnSuccess
将以您在 servlet 实现的方法中返回的返回值作为参数。
我认为我当时的主要误解与 GWT RPC 建立在 servlet 机制(内部)上这一事实有关,因此在当时尝试将这种机制与异步 servlet 一起使用是不可能的,因为 GWT RPC 是建立在 servlet 上的2.5(再次,当时)。