第3回 EJBの正しい用い方
――JavaBeansとEJB、どちらを使えばよいのか――

JavaBeansとEJBのメリットとデメリットを知る

 皆さんはこの講座を通して、JavaBeansとEJBの違いを稼働環境やプログラミングの観点でいろんな角度から見てきました。これをまとめる意味でJavaBeansとEJBのメリットやデメリットを考えてみたいと思います。

 まずJavaBeansはビーンを呼び出す外部プログラムと同じホストコンピュータに存在したことを思い出してください。これとは違い、EJBは外部プログラムの稼働するホストコンピュータとは異なるコンピュータに存在し、ネットワークを経由してEJBを活用したことも思い出してください。この特徴が端的に分かるようにJavaBeansをローカル・ビーン、EJBをリモート・ビーンと呼んだわけです。このようにプログラムが稼働する場所や配置の関係によってコンピュータを理解する方法は、分散コンピューティングというコンピュータ技術の分類の中でいろいろと研究されてきた分野です。しかしJavaBeansやEJBは少し見方を変えると、ビーンを数多く作成し、それをたくさんの人に使ってもらうことで、システム開発の省力化や効率化をアップする役目も担います。こういう考え方は分散コンピュータというよりは、部品の流通や効率化という見方です。ここではこれに焦点を当ててそのメリットとデメリットを探ってみたいと思います。JavaBeansはJavaが生み出されてきた最初からJavaに組み込まれていた部品の考え方です。ですからこれを利用して業務ロジックをJavaアプリケーション・プログラムやアプレット、サーブレットに、ただ何も考えずに記述するのではなく、JavaBeansのような部品にしておくと、Javaが動く環境ならどこでも使える業務ロジックになります。

図1 業務ロジックはBeanにするとどこでも使える部品になる

 またJavaBeansの作り方は厳格に決められているので、これに従ってJavaプログラムを作成すれば、開発の手順を統一化させたりすることもできます。こうすると同時に業務システムの標準化なども図れるでしょう。いいことばかりのJavaBeansのように思えますが、実は次のような不便なこともあります。

 例えばJavaBeansはプログラムを開発する人には極めて有効な手法です。しかし、ただ業務ロジックを使って仕事するだけの人にも有効かといえば、必ずしもそうではありません。なぜなら業務ロジックを利用する人は、それがどのような手順で作られていようと関係ありません。要はいつでも簡単に業務ロジックが使えればいいわけです。

 またJavaBeansはそのまますぐに使えるわけではありません。必ずそれをJava開発ツールに組み込んだり、手でプログラムを作成するなどのコンパイル作業をして業務プログラムを組み立てないといけません。

図2 JavaBeansには組み立て作業が必要

 さらに、JavaBeansの弱いところは、外部プログラムとJavaBeansの間や、JavaBeans同士でプログラムを活用したいときにネットワークを介在してやりとりすることができないことだといわれています。例えば、あるJavaBeansが多くのユーザーから使われるようになったときに、その影響が同じコンピュータ内の全部のプログラムの性能悪化に及んでしまいます。こういう場合は負荷の大きいJavaBeansをほかのコンピュータに移して使うのがコンピュータの世界のセオリーです。そのためには外部プログラムとJavaBeansがコンピュータ間の違いをまたいでネットワークを介してやりとりすることが必要です。

 いくつかいいましたが、このようにJavaBeansにはメリットがたくさんあります。しかしコンピュータの使い方が多様化する中で、JavaBeansのデメリットも目立ってきたわけです。

EJBがJavaBeansのデメリットを改善する

 いままでお話ししたJavaBeansのデメリットを改善するために考え出されたのが、実はEJBです。EJBはJavaBeansで足りない機能を積極的に補うように考えられた部品の仕組みです。例えば外部プログラムとEJBのやりとりは、基本的にネットワークを利用して行うようになっています。ネットワークのやりとりの仕組みを皆さんが1つ1つ考えて行うのは大変なことです。

 しかしEJBでは、これらネットワークのやりとりが私たちの見えない個所で自動的に行われています。こうすることで私たちは、難しい仕組みを意識することなく簡単に業務ロジックの開発に専念することができます。またEJBはメーカーやベンダに依存することなく、どんなアプリケーションサーバ(以下APサーバ)でも導入して動かすことができます。

図3 EJBはどのAPサーバでも導入して動く

 JavaBeansは開発者による組み立て作業を行ってJavaBeansの業務ロジックを使う必要がありましたが、EJBはAPサーバ付属の専用インストーラを使って導入すれば、いつでも使えるように待機状態にさせておくことができます。

図4 待機状態のEJBを呼び出して活用する

 そうすれば、EJBを使いたい外部プログラムが待機状態のEJBをコールすれば、いつでも目的のEJBを使うことができます。このようにJavaBeansはプログラミング開発の効率的に有効な部品であるのに対して、EJBは簡単にAPサーバに導入して使うという、いわばパッケージプログラムのような側面を持つ部品ともいえるのです。

EJBは業務処理をサービスする窓口でもある

 EJBは、APサーバに導入すれば、いつでも使うことができるようになります。ここからEJBというのは業務処理というサービスを提供する窓口になる、という発想も生まれてきます。例えばこれらの窓口をいくつか組み合わせて、最後に必要な業務処理を完成させることになります。

図5 複数の窓口を組み合わせて業務を作る

 こうなると重要になってくるのが、複数のEJBをまとめて1つの業務ロジックとするわけですから、その中の処理が1つでも失敗したら、いままでやったすべての処理をなかったことにしなければいけません。こういう考え方をトランザクションといいます。EJBはたくさんの人が分業して作成した部品を組み合わせて業務を遂行するという目的から、おのずとトランザクションという世界でうまく働いてくれないと使いものにならない部品でもあるわけです。

図6 トランザクションの考え方

 EJBはほかの人が作ったEJBを自由自在に組み合わせて業務ロジックを作った場合でも、トランザクションの単位(トランザクションのスコープといいます)を自由に決めることができるようになっています。こういう作業はJavaBeansではまったくできない処理です。

図7 EJBはトランザクション・スコープを自由に決められる 

 このように業務ロジックをEJBにしておくことは、複数のプログラムから簡単にEJBを活用させて業務システム構築の生産性をアップさせるのに、非常に有効な手段となり得るわけです。

COLUMN
いま、とてもよく話題にされるWebサービスも、リモート上で稼働するプログラムを活用する手法の1つです。例えば、業務ロジックをEJBで作成したとしても、それをWebサービスを使って活用するようなこともできます。しかし注意しないといけないのは、Webサービスを使えば手軽にリモート上の業務ロジックを活用することができますが、Webサービスを使っていくつかの窓口を組み合わせて1つの業務ロジックを完成させたとしても、これらをまとめてトランザクション単位にすることはできません。

リモートの業務ロジックを呼ぶ方法はWebサービス以外に、TCP/IPで細かく制御したり、RPCを使ったり、ミドルソフトで決まった呼び出し方法などたくさんあります。でもトランザクション単位の制御を手軽に制御できる方法はEJBしかありません。サーバサイドJavaの世界でもプログラムのいろいろな呼び出し方法がありますが、それぞれどのような違いがあるのか研究してみるのも面白いかもしれません。

リモートの業務ロジックを活用する方法はたくさんある 

2/5

 INDEX

第3回 EJBの正しい用い方
  今回の内容の目的  
  JavaBeansとEJBのメリットとデメリットを知る
EJBがJavaBeansのデメリットを改善する
EJBは業務処理をサービスする窓口でもある
  EJBを流通するという考え方
業務処理は必ず失敗なく実行されないといけない
  どこでも使えるBeanにするための考慮点を知る
  JavaBeansにするのか、EJBにするのか
では実際にどうするのか?
  

連載記事一覧




Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間