2009-05-29 30 views
0

我需要實現一個Web應用程序,但不是使用關係數據庫,而是需要使用不同的SOAP Web服務作爲後端。應用程序的一個重要部分只調用Web服務並顯示結果。由於Web服務是以操作形式明確定義的:在參數和返回類型中,似乎基本的GUI可以很容易地構建,就像基於域實體的腳手架一樣。Grails中的腳手架Web服務

例如,在SearchProducts Web服務操作的情況下,我需要輸入搜索參數作爲輸入,因此可以構建搜索頁面。操作將返回一個產品列表,所以我需要一個頁面,它將在某種表格中顯示此列表。

Grails中已經有一些庫讓你實現這個功能。如果不是,你會如何去創建一個?

回答

0

你應該可以使用XFireCXF插件。對於自動腳手架,請在腳手架模板中修改您的Controller.groovy模板,以便自動生成您需要的方法。

1

也許最簡單的方法是在WSDL文件上使用wsimport來生成客戶端存根。然後,您可以從Groovy的存根中調用方法,就像您從Java調用它們一樣。

例如,考慮位於http://terraservice.net/TerraService.asmx?wsdl的Microsoft TerraServer的WSDL文件。然後你運行類似於

wsimport -d src -keep http://terraservice.net/TerraService.asmx?WSDL 

它將所有編譯後的存根放到src目錄中。然後,如果你想查閱了大量的Web服務,爲所有他們的存根,你可以寫Groovy代碼像

import com.terraserver_usa.terraserver.*; 

TerraServiceSoap sei = new TerraService().getTerraServiceSoap() 
Place home = new Place(city:'Boston',state:'MA',country:'US') 
def pt = sei.convertPlaceToLonLatPt(home) 
println "$pt.lat, $pt.lon" 
assert Math.abs(pt.lat - 42.360000) < 0.001 
assert Math.abs(pt.lon - -71.05000) < 0.001 

。或者您可以使用動態代理。

儘管如此,底線是讓Java能夠完成它已經做得很好的事情,並使用Groovy來讓您的生活更輕鬆。

+0

非常全面的答案。 – 2012-06-15 09:56:28