はじめに
この連載では、「オープンソースApache Tuscanyで楽しむSOA」として、オープンソースのSCA準拠製品である「Apache Tuscany」を取り上げ、SOA(サービス指向アーキテクチャ)の開発について説明していきたいと思います。第5回目の今回は、コンポーネント同士をWebサービスでワイヤリングする方法を紹介していきます。
これまでの連載
- 第1回「Apache Tuscanyの紹介」
- 第2回「Apache Tuscanyの環境設定」
- 第3回「Web2.0から始めましょう(JSONRPC編)」
- 第4回「Web2.0から始めましょう(Atom編)」
コンポーネント同士をWebサービスでワイヤリングする
筆者自身もそうですが、Webサービスと聞くと身構えてしまう方でした。WebサービスはSOAPやWSDLの知識が必要であったり、それを動かすためのAxis2の知識や経験も必要です。筆者は概念は理解していたのですが、普段実装することがないため、どうすればWebサービスを使えるようになるのか手順すら分からない状態でした。
今回はそれらの知識がなくともコンポーネント同士をWebサービスでワイヤリングする方法を説明します(WSDLファイルを使ったワイヤリングの仕方については、次回説明します)。
バインディングでどうにかならないか
今回ワイヤリングするのは、前回紹介したBasketとCalcChargeコンポーネントです。前回は同じコンポジット内にあったため、Basketコンポーネントのreference
要素にはname
属性とtarget
属性しかありませんでした。CalcChargeのservice
要素もname
属性しかなくbinding
要素はありませんでした。第1回から繰り返し強調しているように、コンポーネントの実装にプロトコル固有の実装を記述する必要はありません。サービスにおいてどのプロトコルを使用するかを決めるのです。従って、図1のようにコンポジットファイルを記述しました。CalcChargeのservice
要素にbinding.ws
要素を追加しています。
図2のようにたくさんの警告や致命的なエラーが出ています。こういう場合はまず、jarファイルがあるか確認しましょう。もしかしたらAxis2のjarファイルがないだけかもしれません。
第2回で作成したユーザーライブラリーTuscany_1_5_LIB(図3)を見てみます。Axis2関連のjarは揃っており、原因は別のようです。
サービスを確認する
最初の警告を見てみましょう。serviceコンポーネントが見つからないと怒られているようです。前回、CalcChargeのインターフェースに@Remotable
アノテーションをつけなくても認識してくれましたが、今回は@Remotable
をつけないとだめなようです(図4)。
また、CalcChargeImplがCalcChargeを実装するように変更します(図5)。サービス側のコンポーネントとしてはこれで十分です。