2012-09-19 82 views
0

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

如果我正确理解Google文档,我必须添加moduleentry point class,这是否正确?如果你能给我一些提示并帮助如何创建一个rpc服务,那将是非常好的。

+1

基于'StockWatcher'的教程是一个很好的开始! https://developers.google.com/web-toolkit/doc/latest/tutorial/gettingstarted –

回答

1

如果创建在Eclipse的一个新的GWT项目“新建项目”向导“生成项目的示例代码”检验,它将包括一个样品的方法,然后你就可以根据适应或复制一个全功能的RPC服务满足您的需求。

0

内存不足,不要在我面前发生日食。 首先用生成的测试代码创建一个测试项目,之后可以将其删除。 是的,你将不得不添加一个模块。 在客户端创建异步调用的两个接口,并在服务器端继承它。 希望我明白你的问题的权利。

0

我不确定最能帮助您的是什么。 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实现监听到URL指示@ RemoteServiceRelativePath。这就是客户端知道在哪里发出请求的方式,服务器知道哪个servlet出现该请求。我建议使用:

../my-service.gwt为相对路径(GWT模块被刊登在<ROOT>/module_name

配置Web应用程序来使用/my-service.gwt

servlet的,但它完全取决于您的喜好:)

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