2011-07-26 30 views
0

我有一個GWT客戶端的谷歌應用程序引擎應用程序。像平常一樣,大多數服務器功能都可以通過普通的GWT RPC調用訪我正在用C++寫一個需要與appengine應用程序通信的數據挖掘應用程序。問題在於,實現了太多的gwt servlet,因此重寫服務器代碼是不可能的。如何使用libcurl從c或C++客戶端調用gwt rpc servlet?

任何想法?

回答

1

如果您在客戶端上使用java,您可以使用GWT SyncProxy。雖然這個庫的主要用例是測試遠程gwt rpc服務,但它可以有效地用於任何目的。當你用C++開發你的客戶端時,這可能不適合你。

如果你控制的GWT應用程序(也就是你可以重新編譯它),你可以可能做這樣的事情:

  1. 出口RPC相關的功能轉換爲JavaScript。這就是讓你的GWT代碼的特定功能可以在主機頁面內被調用爲正常的Javascript函數。請參閱this文章的教程

  2. 使用類似webkit的embedded browser engine並加載您的GWT模塊腳本。

  3. 將導出的GWT函數調用爲正常的java函數。

但它可能會被證明是太辛苦了,所以你可能會更好重構的servlet來揭露另一個基於JSON/XML接口除了RPC。

0

解決,最好的方法是塔希爾建議。試圖直接從C++連接到GWT rpcs只是太多的工作。最簡單的方法是在服務器端編寫精簡的包裝器作爲正常的servlet,並使用C++中的http和curl。關於對象序列化爲JSON或XML仍然存在一個問題。我選擇在我想要序列化的對象字段上編寫自定義註釋,然後在運行時讀取這些註釋以序列化它們。

+0

有幾個庫可以輕鬆實現POJO - > JSON轉換。例如,請參閱[GSON](http://code.google.com/p/google-gson/)和[XStream](http://xstream.codehaus.org/json-tutorial.html)。 XStream主要用於XML,但也可以處理JSON。 –

+0

另請參閱Restlet,它可能會幫助您解決雙向問題,並且已經有用於C++的REST庫。 –