2009-05-29 12 views
0

私はWebアプリケーションを実装する必要がありますが、リレーショナルデータベースを使用する代わりに、別のSOAP Webサービスをバックエンドとして使用する必要があります。アプリケーションの重要な部分はWebサービスを呼び出して結果を表示するだけです。 Webサービスはオペレーションの形式で明確に定義されているため、パラメータと戻り値型では、ドメインエンティティに基づく足場の場合と同様に、基本的なGUIを簡単に構築できるようです。GrailsのWebサービスの足場

たとえば、SearchProducts Webサービス操作の場合、入力として検索パラメータを入力する必要があるため、検索ページを構築できます。オペレーションは製品のリストを返すので、このリストをある種のテーブルに表示するページが必要です。

これを達成するためのgrailsにはすでにいくつかのライブラリがありますか?そうでない場合、あなたはどのように1つを作成するつもりですか?

答えて

0

XFireまたはCXFプラグインを使用できるはずです。自動スキャフォールディングの場合、必要なメソッドを自動生成するように、スキャナーのテンプレートでController.groovyテンプレートを変更します。

1

おそらく最も簡単な方法は、WSDLファイルでwsimportを使用してクライアント側のスタブを生成することです。その後、Groovyのスタブ内のメソッドをJavaから呼び出すように呼び出すことができます。

たとえば、MicrosoftのTerraServerのWSDLファイルは、http://terraservice.net/TerraService.asmx?wsdlにあります。そして、あなたはsrcディレクトリ内のすべてのコンパイル済みのスタブを置く

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

のようなものを実行します。そして、あなたは、Webサービスの多くにアクセスしたい場合は、それらのすべてのためのスタブを生成

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 

のようにGroovyのコードを書くことができます。代わりに、動的プロキシを使用することもできます。

しかし、結論はJavaが既にうまくいくようにし、Groovyを使用することでより簡単にできるようにすることです。

+0

非常に包括的な答えです。 –

関連する問題