Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

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

CalcChargeをJavaからJRubyに書き換え

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/12/18 14:00

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

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

目次

はじめに

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


  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

修正履歴

  • 2009/11/24 00:14 執筆完了しました

著者プロフィール

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

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

バックナンバー

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

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5