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

樋口研究室
2001/5/2

サーバ・サイドJavaで活躍するコンポーネント(部品)を知ろう

  読者の皆さんはBeanという言葉を一度は聞いたことがあると思います。サーバ・サイドJavaプログラムの世界では業務で使うJavaプログラムを、コンポーネントといわれる部品で作成すると、プログラムの生産性や使い勝手のよいシステムができるといわれています。

 このコンポーネントという言葉。一体何を表しているかといえば、実はサーブレットやJSP、Beanなどのプログラムを表しています。今回の記事の内容は、この中でもBeanというプログラムの、なかなか表に現れてこない成り立ちやスマートな使い方を解きほぐしていきたいと思います。

 さてサーバ・サイドJavaの世界で、実際にBeanを使ってeビジネス・システムといわれるものを作った場合、Beanがどのように使われるかというと、次のような処理の流れになります。

図1 サーブレットとBeanとJSPの連携

1 ユーザーの目の前にあるブラウザから、サーバ・サイドにあるJavaプログラム、つまりサーブレットの起動要求がアプリケーションサーバに届きます

2 サーブレットがアプリケーションサーバ上で起動すると、最初にインターネット環境から送付されてきたパラメータなどを取り込みます。このパラメータの多くは、ユーザーがブラウザから入力した内容です

3 サーブレットがすべてのパラメータを取り込んだら、今度はそれをBeanに渡します

4 Beanが起動します。実はこのBeanが業務処理を行う本体のプログラムになります

5 Beanは業務処理を実行します。そして処理が終了したら、処理の結果をBeanに保存した後、終了します

6 その後、サーブレットに制御が戻ります

7 Beanから制御が戻ったサーブレットは、今度はJSPを呼び出します。JSPもただ単にHTMLを拡張したコンテンツにすぎませんから、サーブレットがJSPを呼び出すときはサーブレット自身がブラウザに成り代わってJSPのURLを呼び出すだけです。このJSPは何のためにあるかというと、Beanの中にある結果を引き抜いてブラウザに返す役目だけを果たします

8 JSPがサーブレットになって起動します

9 JSPが起動すると、このJSPは先ほど業務処理を実行したBeanを参照しにいきます。なぜかというとJSPはBeanの中に保存されている業務の結果を参照するためだけに働く役目を持つからです

10 JSPがBeanから結果を引き抜いたら、その内容がブラウザに送信されて表示されます

プログラムは目的の違った複数のclassファイルで成り立つ

 さて、いま説明した処理の流れの面白いところは、サーブレットやBean、JSPなど目的の違った3つのコンポーネントが登場したように思えますが、実はその3つの実体はといえば、ただ普通のJavaのclassということです。
 
 サーブレットはHttpServletという親クラスを派生して作成すると決まっていますが、それ以外ではただ単にJavaのclassにすぎません。

 Beanはプロパティやメソッドという決められた規則に沿って作成されていなければいけません。しかしこれも変数やサブルーチンの決まった作り方をすればBeanになってしまいますので、最終的にはJavaのclassです。

 またJSPといえば、最初はHTMLの中にJSPで決められているタグを含むテキストファイルですが、結局これはサーブレットやブラウザから呼び出された時点でサーブレットというJavaのclassになって動きます。

 ですから3つのコンポーネントは、すべてがJavaのclassであるわけです。これらのclassの何が違うかといえば、サーブレットはインターネットからのデータの入出力操作を専門に行うclassであり、またBeanは業務ロジックに特化したclassであり、またJSPはブラウザへの表示を専門に行うclassファイルというふうに、その目的が違っているということに尽きます。

  サーバ・サイドJavaの特徴は、これらの別々の作業を行うclassファイルといった専門業者に依頼して、1つのeビジネス・アプリケーションを完結させます。

 このように目的の異なったclassのことを、サーバ・サイドJavaの世界ではコンポーネントと呼ぶわけです。

図2 クラスが3つ連動して動く

Beanのメリットは、どこでもそれが使えること!

 さてコンポーネントの内容を理解したところで、話をこのコンポーネントの1つ、Beanに戻したいと思います。先ほどの処理の流れでも出てきたBeanの役目は、業務処理を専門に行うということでした。

 この業務処理の部分をBeanにしておくと、どういうメリットがあるかというと、それはその業務処理がインターネット環境であろうとスタンドアロン環境であろうと稼動するコンピュータの環境を区別せず、すべての環境で共通で使うことができるJavaプログラムになるということです。

 例えばここにあるBeanがあるとします。このBeanはほかのプログラムから何かキーになる値をもらえば、それに対応するデータをDBから検索して、その結果を求めるBeanだとします。

 このBeanをインターネット環境で使うとすると、Beanに対してキーを渡してくれるのはサーブレットの役目になります。サーブレットはBeanの処理の結果もブラウザに返します。

図3 サーブレットからBeanを活用する

 また、皆さんの目の前にあるパソコンで、この同じBeanを使うことができます。その場合はJavaアプリケーションという作り方でプログラムを作成して、パソコンのキーボードから処理に必要なキーをもらって、それをBeanに渡します。結果を画面に表示するのもJavaアプリケーションの仕事です。

図4 JavaアプリケーションからBeanを活用する

 また先ほどはブラウザからサーブレットを使ってBeanを使う例をお話ししましたが、同じブラウザを使っても、また少し違ったBeanの使い方ができます。その方法がJavaアプレットを使う方法です。

 JavaアプレットはWebサーバからダウンロードされてWebブラウザで動きます。これと同時に、Beanも一緒にWebブラウザへダウンロードさせることができます。Javaアプレットにはキーを入力するフィールドがあるはずですから、ここにキーを入れてボタンを押します。するとキーがBeanに渡されて、処理の結果をまたJavaアプレットが受け取り結果を表示させます。

図5 JavaアプレットからBeanを活用する

 業務処理の部分をサーブレットやJavaアプリケーション、Javaアプレットの中に直接入れてプログラムにすることもできます。しかしそうしてしまうと、そのプログラムはサーブレットの場合はアプリケーション・サーバの環境だけで動きますし、Javaアプレットの場合はブラウザの環境だけ、Javaアプリケーションはスタンドアロンのパソコン環境だけで動くプログラムになってしまいます。処理している業務の内容は、すべて同じであるにもかかわらず、それをほかの環境で動かすときは、また新しくプログラムを作り直さないといけません。

 Beanというのは純粋に業務の処理をする部分だけしか持っていません。逆にBeanをそのように作っておくと、業務を動かすJavaの環境に合わせてBeanを呼び出すプログラムを取り替えるだけで、まったく同じ処理をするプログラムを作成するわけです。

 これがいわゆる同じプログラムを、どんなプログラムからも共有に使える部品の考え方であり、サーバ・サイドJavaプログラムでも、この考え方をうまく活用してプログラムを作成していくことが、ほかのプログラムの仕様や、稼働している環境が変わったりしても、すっと手間をかけずに機能を拡張していける、将来性のあるeビジネス・アプリケーションにしていくノウハウなのです。

2/4

 INDEX

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


連載記事一覧




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

注目のテーマ

Java Agile 記事ランキング

本日 月間