第1回 ローカルBeanとリモートBean

樋口研究室
2001/5/2

Beanには2種類の稼働形態がある!?

 さてBeanについては、皆さんの中にはすでにプログラム開発やシステム構築に活用されていて、すでによくご存じの方も多いと思います。この詳しい内容については、この@ITのサイトの中でもいろいろな先生が解説する分かりやすい記事があります。

 そこでここではこのBeanをシステムに応用するデザインという観点に着目して、本来Beanの狙っている特長や活用方法というものを理解していきたいと思います。いままで解説したように、Beanというのは、あくまでも部品です。ですからBeanを利用するときは、サーブレットやJavaアプリケーション、Javaアプレットなど、Beanを呼び出すプログラムの存在が必要です。このBeanを呼び出して活用するプログラムを「外部プログラム」といいます。さてこのBeanですが、なかなかその使い勝手やメリットなどが端的に解説されたものはないですが、実はそのBeanの稼働の仕方によって大きく2種類の区別ができることをご存じでしょうか?

 この区別というのはBeanを呼び出す外部プログラムと、そこから使われるBean、この2つのプログラムのコンピュータの配置の関係で決まってくるものです。それがいまからお話しする「ローカルBean」と「リモートBean」というものです。

ローカルBeanとは?

 ローカルBeanというのは、外部プログラムとそこから呼び出されるBeanが同一のコンピュータ(ホスト・コンピュータ)に配置されているBeanのことです。ローカルBeanは、一般的にJavaBeansと呼ばれており、この内容については多くの皆さんがご存じかと思います。

図6 外部プログラムとローカルBeanの配置

 サーバ・サイドJavaで活用するJavaBeansの詳しい作り方や機能については後述しますが、JavaBeansというのはいつも同じコンピュータ上に存在しているプログラムを意識しながら動いています。そのため面白い特徴も幾つか持っています。

 例えばローカルBeanで作成されたJavaBeansは、同じホスト上のほかのローカルBeanのJavaBeansを呼び出して使うことが多くなります。要はいろいろな処理の目的を持つJavaBeansがお互い連携して動くわけですね。

 そのため、JavaBeansではこのような連携がラクにできるように、イベントという仕組みを持っています。イベントというのは、あるJavaBeansが動いたら、同時にその動いたことをほかのJavaBeansに知らせることができる情報のことです。この仕組みを応用すると、例えばJavaの開発ツールでよく見られるように、あるイベントが発生したら、次にこのJavaBeansを動かすといった指定をしてプログラムを作成したり、場合によってはJavaBeans同士を線で結んで(この線がイベントが発生したことを表します)、ほかのJavaBeansを起動させたりするプログラムを作成することもできます。このイベントはほかのJavaBeansに送られて、また違ったJavaBeansの処理を起動させることができます。

図7 JavaBeansはイベントという仕組みを持っている。
Java開発ツールにはイベントの定義を線で結ぶことで
ビジュアルに 定義できるようにしているものもある

 このように、イベントなどはまさに同一のコンピュータというローカルな環境の中で動く仕組みなので、ローカルBeanと言葉を端的に表しているものだと思います。

リモートBeanとは?

 次にリモートBeanというのは、外部プログラムとBeanが、それぞれ異なるコンピュータ上で動くという特徴を持ちます。

 外部プログラムとBeanが、それぞれ違ったコンピュータ上に配置されているので、外部プログラムがBeanを呼び出す際には、その間にネットワークが介在したデータのやりとりが行われます。このようなリモートBeanは一般的にEJBと呼ばれています(EJBの詳細については@ITの「サーバ・サイドJavaテクノロジ重点キーワード」を参照してみてください)。

図8 外部プログラムとリモートBeanの配置

 このEJBもJavaBeansと同じようにほかのEJBと連携して動いてeビジネス・アプリケーションで活用されるケースが多いBeanです。しかしEJBがほかのEJBを呼び出すときは、JavaBeansのようにイベントを使ってほかのEJBを呼び出すわけではありません。

 EJBからEJBを呼び出すときは、呼び出し元のEJB自体が外部プログラムの役目を果たすことになります。この外部プログラムの役目をするEJBの中に、EJBを呼び出すためのプログラム処理を記述します(これをEJBクライアントといいます)。このEJBクライアントがネットワークを経由して、また次のEJBを呼び出すことになります。

(リモートBeanが複数のリモートBeanにまたがって1つの業務になる)
図9 EJBからEJBの連携概要

 またリモートBeanのEJBはローカルBeanと違った非常に大きな特徴を持っています。EJBというのは、遠く離れた外部プログラムから呼び出されて使われるという性質を持っていますから、EJBを動かすための専用のサーバ上に存在します(この専用サーバのことをコンテナなどといいます)。

 このように1つのEJBはサーバ上に動いていて、同時に数多くのユーザーから使われる宿命を持ちます。同時に使われるということは、一挙に同じEJBが起動されても処理のパフォーマンスを落とさずに動かなければいけません。また、もし業務処理が失敗しても、いままで実行した内容を何もなかったように元に戻さないと処理全体の整合性がとれなくなってしまいます。

 一般的にこのような仕組みをきちんと考えることを、トランザクション機能を持っているといいます。さらにEJBは、リモートのサーバにEJBを動かすコンテナというソフトウェアさえ動いていれば、どんなメーカーやベンダの提供するコンテナでも動くように作ることができるというのがJavaのオープンな考え方です。

 皆さんはパソコンでWindowsを利用すると思いますが、そこで動くワープロや表計算などのパッケージ・プログラムは、どこのメーカーのパソコンで動くWindowsでも使えることを体験していると思います。

 EJBも実はそのようなポータビリティ(どこでも動くという意味で可搬性といいます)を狙っていて、皆さんの好きな身近にあるアプリケーションサーバ(コンテナはアプリケーションサーバに付属して提供されています)さえあればどこでも稼働する、とても有益な部品になるわけです。

 こういうことを実現するにはトランザクション機能以外にも、どんなアプリケーションサーバにもEJBを簡単に導入することができるようにインストール手順やカスタマイズ手順が明確に決められていないといけません。こういう作業をサーバ・サイドJavaの専門用語でデプロイメント作業といいますが、このような仕組みもリモートBeanのEJBでは考えられています。

図10 JavaBeansとEJBの共通部分、異なる部分


3/4

 INDEX

第1回 ローカルBeanとリモートBean
  今回の内容の目的  
   サーバ・サイドJavaで活躍するコンポーネント(部品)を知ろう
プログラムは目的の違った複数のclassファイルで成り立つ
Beanのメリットは、どこでもそれが使えること!
  Beanには2種類の稼動形態がある!?
ローカルBeanとは?
リモートBeanとは?
  ローカルBeanとリモートBeanの共通部分
ローカルもリモートも業務ロジックは同じ
  

連載記事一覧




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

注目のテーマ

Java Agile 記事ランキング

本日 月間