使用我的自定义Servlet的GWT RPC机制

时间:2009-09-15 06:50:24

标签: java gwt servlets asynchronous gwt-rpc

我目前有一个使用RequestBuilde的GWT应用程序 将消息发送到我拥有的servlet(使用POSTGET),以及我的servlet (在doPostdoGet)“暂停”请求(这是通过使用 Servlets 3.0 spec)并将其添加到队列中 另外我有一个 守护程序线程在后台运行并“播放”请求 当有新数据时
除了我刚发送的这个事实外,这对我来说很有用 现在的字符串,我想利用RPC机制发送 对象。
我的问题是这样的:
如果我创建我的myServiceImpl类扩展 RemoteServiceServlet我该如何处理doPostdoGet呢?我需要暂停我的请求以利用异步支持,应该在哪里完成?我可能会在this.getThreadLocalRequest()课程中使用我的RPC方法调用myServiceImpl方法,但我不确定它会有多么明智。
我不是 我确定我甚至理解GWT如何处理来自客户端的呼叫 那个异步接口。 是否有机会调用doGet作为servlet的例子 确保它调用所需的RPC方法?
对不起,如果我弄得一团糟,那就是我找不到更多 详细的技术信息,以及RPC业务的工作原理。
感谢任何借贷手 以太

2 个答案:

答案 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或调用OnErrorOnSuccessOnError如果服务器端的方法引发错误,则为OnSuccessOnSuccess将使用您在servlet实现的方法中返回的返回值作为参数。

答案 1 :(得分:1)

我认为当时我遇到的主要误解是GWT RPC构建在servlet机制(内部)上,因此尝试将该机制与异步servlet一起使用,当时不可能,因为GWT RPC是建立在servlet 2.5上(同样,当时)。