我目前有一个使用RequestBuilde
的GWT应用程序
将消息发送到我拥有的servlet(使用POST
和GET
),以及我的servlet
(在doPost
和doGet
)“暂停”请求(这是通过使用
Servlets 3.0 spec)并将其添加到队列中
另外我有一个
守护程序线程在后台运行并“播放”请求
当有新数据时
除了我刚发送的这个事实外,这对我来说很有用
现在的字符串,我想利用RPC机制发送
对象。
我的问题是这样的:
如果我创建我的myServiceImpl
类扩展
RemoteServiceServlet
我该如何处理doPost
和doGet
呢?我需要暂停我的请求以利用异步支持,应该在哪里完成?我可能会在this.getThreadLocalRequest()
课程中使用我的RPC方法调用myServiceImpl
方法,但我不确定它会有多么明智。
我不是
我确定我甚至理解GWT如何处理来自客户端的呼叫
那个异步接口。
是否有机会调用doGet
作为servlet的例子
确保它调用所需的RPC方法?
对不起,如果我弄得一团糟,那就是我找不到更多
详细的技术信息,以及RPC业务的工作原理。
感谢任何借贷手
以太
答案 0 :(得分:5)
要理解RPC忘记POST和GET它的工作方式不同(从编程的角度来看。在内部它确实使用它,但你没有看到或不需要理解它,除非你想做一些异国情调)。 RPC的一个很好的起点是GWT文档:http://code.google.com/webtoolkit/tutorials/1.6/RPC.html
为您提供摘要。使用RPC时,除了扩展myServiceImpl
之外,servlet 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实现的方法中返回的返回值作为参数。
答案 1 :(得分:1)
我认为当时我遇到的主要误解是GWT RPC构建在servlet机制(内部)上,因此尝试将该机制与异步servlet一起使用,当时不可能,因为GWT RPC是建立在servlet 2.5上(同样,当时)。