Spring Web Services-1.0リリース
JSUGでのmatsukazさんの発表
http://d.hatena.ne.jp/matsukaz/20070727#1185558206
を聞いて、ちょっと気になっていたSpring Web Servicesがリリースされたので試してみた。
Spring Web ServicesのWebサイト
インストール
http://static.springframework.org/spring-ws/site/downloads/releases.html
から"full"バージョンをダウンロードすればOK。
サンプル「echo」のビルド
J2SE1.4/1.5 および Maven2が必要。
あとは、samples/echoディレクトリで
> mvn jetty:run
とすれば、ビルド後にjettyが起動してサービスが実行可能な状態になる。
> mvn package
とすれば、targetディレクトリにwarが生成される。
サンプル「echo」の実行
このサンプルはWSDLを動的に生成するタイプなので、エンドポイントは src/main/webapp/WEB-INF/spring-ws-servlet.xml の
要素の中で定義されている。
今回は、http://localhost:8080/echo/services となる。
なお、WSDLの取得URLは http://localhost:8080/echo/services?WSDL ではなく、http://localhost:8080/echo/echo.wsdl となるので注意。(定義ファイルの
あとはSoapUIなどお好きなSOAPクライアントで実行してみてください。
感想
XSDでドキュメント型定義のみ行っておき、そこからWSDLを自動生成するというアプローチは非常に良い落としどころだと思う。
Java->WSDLだとSOAP処理系の実装依存で非互換が発生しやすいし、かと言ってWSDL->JavaではWSDLを作成するのに手間がかかりすぎる。
実は、Java->WSDLで発生する問題の大半はComplex TypeからXMLへのマッピングに起因するものがほとんどで、それ以外の部分、すなわちJavaのmethodをWSDLのoperationにマップする作業はほぼ機械的に行うことが可能だ。従って、「データ型定義はXSD、それ以外はJava」というアプローチは、必要最小限の労力でSOAPサービスの互換性を確保するという面で非常に合理的である。