2012-09-19 112 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的,但它完全取決於您的喜好:)

無論如何,我認爲谷歌教程是最好的。所以請複製&粘貼。嘗試&修改,直到你瞭解整個事情。