当社エンジニアによる書き下ろし技術レポート Close-Up IT

技術レポート 新着RSS(Atom)

この記事に関連するサービス
Webアプリケーションの設計・構築・保守
この記事に関連するお問い合わせ
お問い合わせ

第4章 :サーバーサイドJavaとRDBMSを使ったプログラムの構成と構造

3サーバーサイドJavaとRDBMSを使ったプログラムの動作原理

サーバーサイドJavaを利用したシステム構築の方法は、いろいろなパターンがありますが、ここでは"世のなかの主流"といっていいほど代表的な、サーブレット、JSP、JavaBeansを利用したパターン (註1・註2) でご説明します。

図4-3.サーバーサイドJavaを利用したシステムでのプログラムの動作原理
図中のご覧になりたいところをクリックしてください
図4-3.サーバーサイドJavaを利用したシステムでのプログラムの動作原理 (→汎用機の場合) (1) リクエストの送出 (2) 要求の受け取り (3) 処理の実施 (4) 次画面のためのJSP (Java Server Pages) の呼び出し

この図で、端末とトランザクションとプログラムがどう関連して動作をするのかご説明します。

(1) リクエストの送出

HTMLとして表示されているブラウザ画面に、従業員IDを入力して、[ ENTER ] キーを押すと、Webサーバーに要求が送信されます。
図4-3の従業員IDの入力画面にはHTMLの <FORM> というタグがあり、このタグの「ACTION=」で定義されているロケーション (図4-3では、/arksystems/controller/) が、要求を受け取って起動されるべきプログラムとして指定されます。ロケーションとは、サーバー内でプログラムが格納されている場所のことを言います。

このページの先頭へ

(2) 要求の受け取り

ブラウザからの要求をWebサーバー経由で受け取ったWebアプリケーションは、指定されたプログラム (サーブレット) を起動します。サーブレットは、ブラウザからの入力値も受け取ることができます。

このページの先頭へ

(3) 処理の実施

サーブレットは、JavaBeansとして用意されたオブジェクトに、属性をセットしてインスタンス (実体) を生成します。その後、そのインスタンスに対して操作 (図4-3では、検索) を行います (このあたりは、2章を思い出してください)。
インスタンスは、サーブレットからの操作の指示に応じて処理を実施します。図4-3の場合は、テーブルから従業員IDが000010番の従業員の情報を検索してきます。インスタンスは、この結果を保持し、JVM上のアドレス空間にインスタンスとして存在しつづけます。

このページの先頭へ

(4) 次画面のためのJSP (Java Server Pages) の呼び出し

次の画面 (図4-3では、検索結果表示) を生成するために、JSPを呼び出します。
JSPは、基本的にHTMLの文法で記述されており、<% と %> で囲まれたJSPタグ (命令) で、動的に、インスタンスのなかに保持されている結果を表示できるようになっています。
図中、<%=emp1.getEmpNo() %>と記述されている部分がそうで、「emp1というインスタンスからEmpNoの内容を取り出しなさい」という意味です。
JSPは、最終的にHTMLに変換されWebサーバー経由でブラウザに表示されます (図3-3のSend Map部分に対応するといっていいでしょう)。

このページの先頭へ

どうでしょうか、サーバーサイドJavaを利用したシステムでの、

説明図:HTML、Webアプリケーションサーバー、Javaプログラム

という関係は、CICSの擬似会話モード、

説明図:マップ (エミュレータで表示する画面の定義)、CICS (トランザクションモニター)、トランザクション (プログラム)

と似ていませんか? この相似が理解できれば、サーバーサイドJava技術の理解は、五合目くらいまできていると考えていいと思います。

註1 : サーブレット、JSP、JavaBeansを利用したパターンを、オブジェクト指向設計の用語で「MVCモデル (Model-View-Controller)」といいます。3章の2で説明した、CICS上の擬似会話モードのトランザクション処理に非常に似ています。

  • Modelは、ビジネスロジックを意味し、図4-3では、JavaBeansとして記述されています (EmpBean)
  • Viewは、画面デザインを意味し、図4-3では、JSP (Java Server Page) として記述されています (outemp.jsp)
  • Controllerは、制御を意味し、図4-3では、サーブレットして記述されています (Controller)

こうすることによって、画面デザイナーとビジネスロジックの実装者、プロセスフロー (画面フロー) の設計者の分離ができるというようなメリットがいわれています (実態は、なかなかそうはいきませんが)。

CICSでも、マップ - メインプログラム - サブルーチン という関係を思い出していただければ、

  • Model =サブルーチン:ビジネスロジック (図3-3の従業員検索SUB)
  • View=マップ:画面デザイン (図3-3のMAPAやMAPB)
  • Controller =メインプログラム (図3-3のAPPL1)

という関係がなりたちます (もちろん、オブジェクト指向的な相違点は、あります)。
元の位置へ

註2 : JavaBeansを採用する代わりに、EJBを利用する場合もありますが、EJBを利用するシステムは、構造も複雑になります。JavaBeansを利用したシステムでも十分実用に耐えます。EJBを採用するメリット・デメリットが「どうしても気になる!」方向けに、非常に雑駁で概念的な違いを説明すると、

  • JavaBeansは、汎用機でいうと日付の計算ルーチンなどの、CICS配下にはない、普通のサブルーチン
  • EJBは汎用機でいうと、CICSに登録され、トランザクション管理などの各種サービスを受けるサ/ブルーチン

という違いくらいの比喩になります。
元の位置へ

このページの先頭へ