2011-11-30 57 views
0

我正在尋找一種乾淨的方式將面向服務的訪問添加到現有的GWT應用程序(基於客戶端+基於RemoteService的服務器)。問題是所有的服務都已經到位,由@RemoteServiceRelativePath表示法描述。能夠實際添加@WebService表示法並且可以使用RPC和XML/JSON /來訪問它們將會很好。..將SOAP添加到現有的GWT解決方案

真正的問題是擴展當前應用程序以支持除現有GWT之外的其他客戶端有一點是因爲GWT混淆而導致的。這也導致客戶端和服務器之間不需要的耦合,因爲它們都需要同時部署,因爲.gwt.rpc生成的文件。

我想重用現有RemoteService接口來定義Web服務,並通過純文本協議與新的客戶端連接到它們。另外,我想將現有的GWT客戶端移植到相同的協議。

是否有可能同時使用相同的接口和實現僅僅通過註釋來做到這一點? 什麼是移植現有客戶端以使用純文本協議RequestBuilder的最佳方式?或者只是注入一個新的序列化實現,它的xml/json?

我甚至不知道從哪裏開始的這一點,這就是爲什麼我問。也許最好重寫所有的服務,並一次性移植所有的東西,但它會破壞一切,直到完成。

回答

1

我們有一個不同的方法,因爲GWT服務器端和客戶端之間的GWT耦合並不是全部壞,但給你一個很好的集成,你不必過多考慮通信問題等。 對於這個,我們的應用程序有一個由完整的gwt堆棧(客戶端+服務器耦合)組成的前端層,並且在服務器端,我們通過彈簧和RPC連接到服務層。

在這樣你可以用春天的好處,你不鬆GWT的舒適度。

,但我想聽到的話,已經有人已經等方式;)

+0

這對安全性和帶寬目的也很好,但我們希望將現有的服務從GWT移植到一些可讀的格式(json或xml)並保留相同的數據對象。我目前正在服務器上使用xstream + json,在客戶端上使用AutoBean進行試驗,希望這可以通過最少的代碼更改保持相同的對象。 – brainwash

0

這是較晚,GWT是不是曾經是wonderchild。然而,對於這裏搭售有始有終的緣故是我去了解決方案:

  • 創建一個Java生成器,分析所有模型(共享客戶端/服務器類)文件通過反射和生成的Java文件,讀取/寫入SOAP對象
  • 引導到上述情況,處理本地對象+數組,套一個通用的Java處理器,映射
  • 編寫能對付從文件生成的XML上述

這聽起來有點簡潔的服務並且有點複雜,但'只'需要〜1月編寫代碼以自動將> 200個對象可靠地轉換爲其XML表示。額外的好處是它允許模擬和跨平臺的客戶/服務器。

作爲總結,將所生成的代碼創建新的方法「fromXML」和「toxml用於」的飼料是公共成員(獲取/設置)在給定的類的字段。因此,如果給定MyClass,它將生成實現這些特定於SOAP的方法的MyClassSerializer和MyClassDeserializer Java類,並將它們自己發佈到「調度程序」。所以,只要調度員看到'MyClass',它就會知道從哪裏獲取ser/deser函數。

相關問題