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

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

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

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

2サーバーサイドJavaとRDBMSを使ったシステムの構成

図4-2は、サーバーサイドJavaで構築した、典型的なトランザクション処理システムの概要を表しています。図3-2と見比べながら、以降の説明を読んでください。

図4-2.サーバーサイドJavaを使ったシステム構成例
図中のご覧になりたいところをクリックしてください
図4-2.サーバーサイドJavaを使ったシステム構成例 (→汎用機の場合) (a) ブラウザ搭載機器 (Windows、Mac、携帯電話など) (e) Webアプリケーションサーバー (e) Webアプリケーションサーバー (c) オペレーティングシステム:Unix、Windows、Linuxなど+JVM (Java Virtual Machine) (c) オペレーティングシステム:Unix、Windows、Linuxなど+JVM (Java Virtual Machine) (d) TCP/IPスタックとWebサーバー (Apacheなど) (d) TCP/IPスタックとWebサーバー (Apacheなど) (e) Webアプリケーションサーバー (f) DBMS (Relational DataBase Management System) (b) HTTP (HyperText Transfer Protocol)

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

(a) ユーザーインターフェース:ブラウザ (Microsoft Internet Explorerなど)

サーバーサイドJava技術のみで作成されたシステムは、ブラウザ側で処理を行いません。したがってブラウザは、プレゼンテーション (画面への表示や入力データの受付) だけを担当します。
プレゼンテーションを担う言語は、ブラウザから見るとHTMLという言語だけです。
このことは、3章の2で説明した、3270ダム端末とそれに表示するためのマップという定義体と対比できます。
ブラウザ搭載機器とサーバーとの間は、HTTP (HyperText Transfer Protocol) というTCP/IP上の規約によってやりとりをします。
汎用機の場合、端末タイプが異なると、TCTに定義された端末タイプに応じて適切な表示をしてくれますが、ブラウザの場合、バージョンの違いや搭載機器の違い (例:PC上のブラウザと携帯電話のブラウザ) による非互換は、システム構築担当者が注意をしながら吸収する必要があります。

このページの先頭へ

(b) 通信プロトコル:HTTP (HyperText Transfer Protocol)

インターネットの世界はすべてTCP/IPをベースとしているので、相互接続性に問題がなく、そのため、どこからでも、どのサーバーにもアクセスできることになります。
HTTPの特徴は、ステートレスな (状態を保持しない) やりとりをすることです。SNAでは、通信ができなくなると (汎用機側からのポーリングに端末からのレスポンスがなくなると)、エラーとみなして後始末をしてくれましたね。しかしHTTP通信の場合、ネットワークが切れたのか、ユーザーが処理を中断したのか、サーバーには判断できません。
そのため、さまざまな工夫をして会話 (セッション) の継続に注意を払う必要があるということです (このことは、第5章で詳述します)。

このページの先頭へ

(c) オペレーティングシステム:ほぼ自由な選択+JVM

サーバーサイドJavaを支える各種機能は、2章でご説明したJVM上で動作します。したがって、JVMの稼動を保障されたOSであれば、どのOSでも問題なく動作します。
あとは、信頼性要件や性能要件、コスト、自分が慣れているものといった選択基準で、選定できます。

【現在JVMが動作する代表的なOS】

  • 各ベンダー提供のUNIX (HP-UX、Solaris、AIXなど)
  • Linux (PCサーバー上のLinuxでも、IBM zサーバー (汎用機) でもOK)
  • Windows (98/ME/NT/2000/XP)

このページの先頭へ

(d) 通信制御:TCP/IPスタックとWebサーバー

通信制御というと少し語弊がありますが、WebサーバーがHTTP上のサービスを制御し、多数のブラウザとのHTTPでのやりとりを同時並行に処理します。正確にいうと、TCP/IPスタックが通信制御そのものを実施し、TCPのポート上でHTTPが動作します。
Webサーバーさえあれば、静的コンテンツ (HTMLだけで記述され、ユーザーの入力内容によって内容が変化しない、「絵」のようなコンテンツです。企業情報の紹介用ホームページなどで使われます) の提供は可能です。

【代表的なWebサーバー】

  • Apache:オープンソースとして提供されているWebサーバー
  • IIS:マイクロソフトが提供しているWebサーバー

このページの先頭へ

(e) トランザクションマネージャー:Webアプリケーションサーバー

サーバーサイドで動作するJavaプログラムを、動かすためのソフトウェアです。トランザクション管理機能やセッション管理 (会話処理) 機能を持ち、要求されたモジュールのロードなどを担当します。
通常Webアプリケーションサーバーは、サーブレットエンジン (註1) とEJBコンテナから構成されます。
サーブレットエンジンは、サーブレットプログラムを、サーブレットエンジンのアドレス空間のスレッドとして動作させます。
EJBコンテナは、Enterprise Java Beansの動作を支援するサービスを提供し、EJBによる他リソースマネージャー (DBMSやMOM:Message Oriented Middleware。IBM製品で言うとMQシリーズ) に対する2フェーズコミットなどのトランザクション制御をします。

【代表的なWebアプリケーションサーバー】

  • Tomcat:オープンソースのアプリケーションサーバー (ただし、EJBコンテナはありません)
  • WebLogic:BEA社が提供するアプリケーションサーバー
  • WebSphere:IBM社が提供するアプリケーションサーバー

その他、富士通、日立が提供するもの、小さな独立系ベンダーが提供する安価なものなど、製品数は非常に多い。

このページの先頭へ

(f) リソースマネージャー:各種DBMS (Relational DataBase Management System)

JDBCに対応しているDBMSであれば、リソースマネージャーとして利用できます (JDBCとは、JVMからDBMSへのアクセスを可能にする標準Java APIです)。代表的な製品は、以下のとおりです。

  • Oracle:Oracle社が提供するDBMS
  • SQL Server:マイクロソフト社が提供するDBMS
  • UDB/DB2:IBM社が提供するDBMS
  • PostgreSQL:オープンソースのDBMS

註1:サーブレットエンジンの利点

サーブレットは、「CGIに比べて早い」とか「資源を無駄使いしない」と言われています。その理由は、

  • CGIは一つ一つの処理要求に、UNIXのプロセスを立ちあげるので、初期化と終了に資源を使い、時間がかかる
  • 一方、サーブレットは、サーブレットエンジンの管理下でスレッドとして起動するので軽い

と言われています。汎用機的に表現すると、

  • CGIは、ユーザーからの要求に対して、逐一ジョブ空間を立ち上げてプログラムが動く
  • 一方、サーブレットは、1つのジョブ空間のなかで、マルチタスクで立ち上がって動作する
    (CICSというジョブ空間で、タスクとしてプグラムが動作している)

と言う意味になります。
元の位置へ

このページの先頭へ