サンプルコード 19.30 KB
1 2 →

はじめに

 この連載では、「オープンソースApache Tuscanyで楽しむSOA」として、オープンソースのSCA準拠製品である「Apache Tuscany」を取り上げ、SOA(サービス指向アーキテクチャ)の開発について説明していきたいと思います。第7回目の今回は、サービスの実装に他の言語を使用する方法を説明します。

これまでの連載

Rubyを簡単にサービス化

 前回まではJSONRPC、Atom、Webサービスなど通信プロトコルがサービスの実装から独立していること(プロトコル中立)を説明してきました。これだけでも非常にインパクトのあることです。今回はサービスの実装に他の言語を使用する方法を説明します。

 TuscanyはJRuby、Jython、Groovyなどのスクリプト言語をはじめ、XSLTやXQueryも使用可能です(言語中立)。JRuby以外は趣味でプログラミングの経験があり、ある程度は知っているのですが、今回は言語の紹介が目的ではないため、あえて何も知らないJRubyで挑戦したいと考えています。目標は、CalcChargeImpl以外のインターフェースや実装には一切手を加えず、CalcChargeImplをJavaからJRubyに切り替えることです。

 個人的な希望ですが、Scalaこそコンポーネントを作成するのに向いている言語なのではと考えています。早くScalaがTuscanyでサポートされることを願っています。もしくはどなたかTuscanyで言語をサポートする仕方を教えていただければ、私自身でScalaをTuscanyでサポートしたいとも考えています。他人に頼るなという声も聞こえてきそうなので、言語のサポートの仕方を調査し、いずれ報告できればと思います。

戻り値だけは要注意

 JRubyでサービスを実装すると言っても、前回までで説明したとおりコードの中にプロトコルに関する実装を記述する必要がないのと同様、Tuscanyのための実装やプロトコルに関する実装を記述する必要はありません。従って、Javaの代りにJRubyで記述するという違いだけです。ただし、インターフェースをJavaで記述する場合、JRubyはインターフェースの戻り値と同じになるよう注意する必要があります。

 第1回「Apache Tuscanyの紹介」では依存性注入で他の言語を使用すると記述しましたが、Tuscanyの1.5ではその必要さえありません(内部では使用しているのかもしれませんが、開発者には意識させないようになりました)。CalcChargeを呼び出すBasketImplでReferenceアノテーションを使うだけでCalcChargeを実装したコンポーネントを呼び出すことができます。以前のバージョンでは、依存性注入でJRubyやGroovyを呼び出さなくてはならなかったことを考えると非常にシンプルになりました。最初はCalcChargeのsetterメソッドをBasketImplに追加して動作させていたのですが、これでは当初の目標を達成できません。試しに、前回のコードに戻したところ、正常にCalcChargeを呼び出すことができました。これで、呼び出される言語(JRuby)に応じて呼び出し側の実装(Java)に手を加えなくても大丈夫になったわけです。


1 2
→
INDEX
オープンソースApache Tuscanyで楽しむSOA 第7回「JRubyをサービス化しましょう」
Page1
はじめに
Rubyを簡単にサービス化
JavaからJRubyへの置き換え手順
プロフィール
川久保 智晴 カワクボ トモハル

COBOLで13年、Javaを中心としたWeb開発で10年。2つしか言語知らないのかというとそうでもなく、sed/awk、Perl、Pythonなども一時期は業務で使えるレベルまで達したと思っています(自己申告)。

最近はプロジェクトマネージャやソフトウェアアーキテクトという一見相容れない仕事を繰り返してきましたが、実は両者の技術は密接に絡んでいるというのが最近考えていることです。プロジェクトマネージャがあまりにも技術に疎かったり、ソフトウェアアーキテクトがあまりにもコストに鈍感であったりするのを見るにつけ思いが深まっています。

以前はお酒が大好きでいろんなところに出没していましたが、今はおとなしく家飲みに徹しています。土日は20キロ近くジョギングしたりして爽やかなIT技術者を目指しています。2度と徹夜の日々がなくなることを祈りつつ生活しています。


注目の求人情報
システムエンジニア/ITソリューション
下記システム開発案件に関わるプロジェクトマネジメントあるいはプロジェクトマネジメント補佐業務 (1)...
システムエンジニア/社名非公開
人事・給与業務のアウトソーシングサービスにまつわる人事給与システムの設計・開発に携わる仕事です。 ...
プロジェクトマネージャー/成長著しいPMO専門企業
プロジェクトマネジメントに関するコンサルティング業務 ・SIerとシステムユーザーとなる事業会社の間...

(最新日付順)
名前(ゲストの方もコメントをどうぞ):*
アイコン:
なし

内容(テキストのみ1200文字まで):*

投稿規定に同意して

スポンサーサイト

この記事のトラックバックURL: