创建 GWT RPC 服务

Posted

技术标签:

【中文标题】创建 GWT RPC 服务【英文标题】:Create a GWT RPC Service 【发布时间】:2012-09-19 11:02:38 【问题描述】:

我正在尝试使用GWT 为主页创建后端。我在Eclipse 中创建了一个Google Web Application,没有示例代码,现在我想添加该服务,但开发人员 Google 指南对我没有帮助。我不确定在哪里添加界面以及它是如何工作的。

如果我正确理解了谷歌文档,我必须添加一个module 和一个entry point class,对吗?如果您能给我一些提示并帮助我如何创建 rpc 服务,那就太好了。

【问题讨论】:

基于StockWatcher的教程是一个很好的开始! developers.google.com/web-toolkit/doc/latest/tutorial/… 【参考方案1】:

如果您在 Eclipse 的“新建项目”向导中创建一个新的 GWT 项目,并选中“生成项目示例代码”,它将包含一个具有示例方法的功能齐全的 RPC 服务,然后您可以根据你的需求。

【讨论】:

【参考方案2】:

内存不足,不要在我面前出现日食。 首先使用生成的测试代码创建一个测试项目,然后可以将其删除。 是的,您必须添加一个模块。 在客户端创建异步调用的两个接口,在服务器端继承它。 希望我正确理解了您的问题。

【讨论】:

【参考方案3】:

我不确定什么对您最有帮助。 Google 开发人员指南对我来说已经足够(至少当我在 1.6 版上开始使用它时)为我的 GWT 应用程序创建 RPC 服务。

通用APP

模块:是.gwt.xml 文件。是的,你会需要它。 GWT 编译器会自动找到它并尝试编译所有 GWT 代码(<source> 元素将告诉哪个子包包含将转换为 JS 的 Java 代码)。它还将告诉哪个类实现了 EntryPoint 接口。 onModuleLoad 将是 javascript 在客户端页面中运行时执行的代码。

RPC

嗯,你应该先尝试 UI 的东西,然后,当你有足够的信心时,再尝试服务器的东西。无论如何,方案是:

interface MyService extends RemoteService 
 List<String> doSomething(String sample, int other);


@RemoteServiceRelativePath("../path/to/servlet") // see later
intercace MyServiceAsync 
 void doSomething(String sample, int other, AsyncCallback<List<String>> callback);

这些是接口。稍后是异步的。这就是您将从客户端使用的内容。始终调用并传递 AsyncCallback 的实现,该实现将接收(稍后,您不知道何时)结果。

第一个接口是同步接口。这就是你需要在服务器上实现的。您必须从 RemoteServiceServlet 类继承(它是已经完成所有值处理的 servlet 的实现),并实现您的接口。 GWT 代码完成了其余的工作(几乎)。

public class ServiceImpl extends RemoteServiceServlet implements MyService

 // implement the method normally

您需要从客户端创建服务代理:

private static MyServiceAsync MY_SERVICE = GWT.create(MyService.class);

是的。我知道 GWT 如何知道 MyserviceAsync 和 MyService 一起工作很奇怪。别担心。它有效:)

只需像这样使用服务:

MY_SERVICE.doSomething("value", 111, new AsyncCallback<List<String>>() 
   // note that this code executes some time in the future when response from server is back
   public void onSuccess(List<String> result) 
      Window.alert("Server answered with " + result.size() + " elements!");
   
   public void onFailure(Throwable t) 
      Window.alert("Server failed: " + t.getMessage());
   

服务器路径

您必须配置您的应用程序以使该 servlet 实现侦听 @RemoteServiceRelativePath 中指示的 URL。这就是客户端知道在哪里发出请求,而服务器知道哪个 servlet 处理该请求的方式。我建议使用:

../my-service.gwt 作为相对路径(GWT 模块发布在&lt;ROOT&gt;/module_name

配置您的网络应用程序以使用 /my-service.gwt 的 servlet

但这完全取决于你的喜好:)

无论如何,我认为 Google 教程是最好的。所以请复制粘贴。尝试和修改,直到你了解整个事情。

【讨论】:

以上是关于创建 GWT RPC 服务的主要内容,如果未能解决你的问题,请参考以下文章

servlet 的 GWT RPC 服务分配异常

GWT Servlet 错误 com.google.gwt.user.client.rpc .StatusCodeException: Tomcat 服务器上的 404

gwt 初学者-当我在服务器上进行 RPC 调用时出错-相同的代码在 gwt 开发模式下工作

如何在 GWT RPC 中将异常从服务器传递到客户端

GWT RPC 调用失败

gwt、rpc 服务、StatusCodeException 和无可用日志