SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

オープンソースApache Tuscanyで楽しむSOA

オープンソースApache Tuscanyで楽しむSOA
第7回「JRubyをサービス化しましょう」

CalcChargeをJavaからJRubyに書き換え

  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード サンプルコード (18.9 KB)

 SOAは混沌とした段階から、JBI準拠製品、SCA準拠製品が開発されるに至り、エンタープライズレベルまで進化してきました。この連載では、 オープンソースのSCA準拠製品である「Tuscany」を使ったSOAの開発について説明していきます。第7回目の今回は、買い物かごの合計金額と送料を計算するコンポーネント「CalcCharge」の実装をJavaからJRubyに書き換えます。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 この連載では、「オープンソース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)に手を加えなくても大丈夫になったわけです。

次のページ
JavaからJRubyへの置き換え手順

修正履歴

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
オープンソースApache Tuscanyで楽しむSOA連載記事一覧

もっと読む

この記事の著者

川久保 智晴(カワクボ トモハル)

haruプログラミング教室(https://haru-idea.jp/)主宰。COBOL、FORTRANで13年、Javaを中心としたWeb開発で11年。3つしか言語知らないのかというとそうでもなく、sed/awk、Perl、Python, PHP,  C#, JavaScriptなども一時期は業...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4633 2009/12/18 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング