![]() |
iPlanet Application Server 6.5 入門ガイド |
付録 A iPlanet Application Server のアーキテクチャ
この付録では、次のトピックについて説明します。
サーバプロセス
サーバプロセス
iPlanet Application Server のアーキテクチャには 4 つの内部サーバがあり、エンジンまたはプロセスと呼ばれることもあります。内部サーバは iPlanet Application Server のすべての処理を行います。表 A-1 「iPlanet Application Server のサーバと説明」は内部サーバについてまとめたものです。
表 A-1    iPlanet Application Server のサーバと説明
内部サーバ
プロセス名
説明
プロセス対話の要約
図 A-1 「iPlanet Application Server のプロセス」は iPlanet Application Server の 4 つのプロセスが、クライアントのリクエストを処理するために、どのように対話するかを表しています。
図 A-1    iPlanet Application Server のプロセス
![]()
Web サーバから iPlanet Application Server に送られたリクエストは、まず Executive Server (KXS) のプロセスで受信されます。KXS のプロセスは、Java サーバ (KJS) のプロセスまたは C++ サーバ (KCS) のプロセスにリクエストを送ります。KJS のプロセスは Java プログラミングロジックを実行し、KCS のプロセスは C++ プログラミングロジックを実行します。
KJS と KCS のプロセスにはそれぞれ多数の指定スレッドがあり、各スレッドでは最後まで同じプログラミングロジックが実行されます。Web サーバに返された結果はクライアントブラウザに渡されます。
アプリケーションのリクエストを処理する iPlanet Application Server 技術は、Web サーバの負荷を低減して反応速度を上げるための鍵となります。サーバ管理者は iPlanet Application Server 環境を最善のパフォーマンスにするために、次の設定ができます。
高いパフォーマンスを提供すること以外にも、内部プロセスにより iPlanet Application Server を 24 時間稼働し続けるようにすることもできます。KJS または KCS のプロセスがダウンすると、Administrative Server process (KAS) がそれらを再起動します。iPlanet Application Server の補助監視機能により、KAS プロセスを常に実行しておくことができます。
iPlanet Application Server のすべてのプロセスがダウンした場合、クラスタ内のほかの iPlanet Application Server マシンがあとを受け継ぎます (複数サーバ環境を想定)。さらに、iPlanet Application Server は電子メールやファクスでシステム管理者に警告を発し、システムを別の場所にリダイレクトするように通知します。
Executive Server
Executive Server は iPlanet Application Server のメインエンジンです。Executive Server は、iPlanet Application Server がシステムレベルのサービスを必要とするときにサービスの多くを管理します。また、Executive Server プロセス (KXS) は、アプリケーションリクエストを該当するアプリケーションプロセス (Java サーバまたは C++ サーバプロセス) に分散します。
たとえば、iPlanet Application Server にアプリケーションリクエストが渡されると、次のように処理されます。
Executive Server はリクエストマネージャを起動します。これはシステムレベルのサービスです。
リクエストマネージャはリクエストにスレッドを割り当て、該当するアプリケーションプロセス (Java サーバまたは C++ サーバ) にリクエストを転送します。
リクエストマネージャは、終了時に Executive Server から解放され、ダイナミック利用モデルでのサーバのパフォーマンスが向上します。
Administration Server
Administration Server は 1 つまたは複数の iPlanet Application Server を管理します。GUI 管理ツールの iPlanet Application Server Administrator Tool (iPlanet Application ServerA) を使い、システムやアプリケーションの設定に対するすべての変更内容を該当するサーバに登録します。また、Administration Server は、サーバプロセスが利用できなくなった場合にほかのサーバプロセスを起動するフェールリカバリサービスを管理します。このフェールリカバリサービスは、iPlanet Application Server に高度なフォールトトレランスを提供します。
Java サーバおよび C++ サーバ
Java サーバおよび C++ サーバプロセスはアプリケーションサーバです。Java で記述したビジネスロジックコンポーネントは Java サーバで管理され、C++ で記述したコンポーネントは C++ サーバで管理されます。ビジネスロジックコンポーネントはアプリケーションの核となるもので、開発者が記述したコンパイル済みコード命令を保持しています。また、Java サーバと C++ サーバプロセス (KJS および KCS) は、アプリケーションレベルのサービスを管理します。これらのサービスは、アプリケーションコンポーネントで必要になると適切なプロセスにダイナミックに読み込まれます。たとえば、EJB がデータベースへのアクセスを要求すると、Java サーバはデータアクセスエンジンにサービスを読み込んでそのサービスを使い、その後解放します。データアクセスエンジンが提供するデータベースコネクションは、Java サーバのアクティブメモリにキャッシュされます。別のリクエストがシステムに入力され、同じデータベースにアクセスした場合は、キャッシュされたコネクションが使用されます。このようにして iPlanet Application Server がデータアクセスエンジンを起動する回数を減らして、リクエスト処理のパフォーマンスを向上させます。
システムコンポーネント
この節では、iPlanet Application Server のアーキテクチャを構成する主な内部システムについて説明します。図 A-2「iPlanet Application Server アーキテクチャ」にこのシステムを示します。
図 A-2    iPlanet Application Server アーキテクチャ ![]()
プロトコルマネージャ
iPlanet Application Server とクライアント間で通信できるようにプロトコルマネージャが管理するコネクタ、プロトコル、およびその機能は次のとおりです。
Web サーバと iPlanet Application Server は、NSAPI、ISAPI、および最適化された CGI を介して通信します。ここで説明するリスナ、Web コネクタ、ストリーミングサービス、およびプロトコルマネージャにより、最適化と優れたパフォーマンスが達成されます。
図 A-3「プロトコルマネージャ」に、プロトコルマネージャが iPlanet Application Server とクライアント (Web ベースまたは非 Web ベース) 間の通信を可能にする方法を示します。Web コネクタとリスナは Web サーバから iPlanet Application Server へのリクエストの送信を管理します。リスナは Web サーバからの要求を分散し、処理します。新しいリスナは HTTP ハンドラで追加します。
HTTP ストリーミングサービスは、iPlanet Application Server から Web サーバおよび Web ブラウザへのデータストリームを扱います。
iPlanet Application Server プロトコルマネージャは、ロードされたアクティブな全リスナにサービスを提供し管理します。プロトコルマネージャは HTTP、HTTPS (SSL を使った HTTP)、および IIOP をサポートします。
図 A-3    プロトコルマネージャ ![]()
Web ブラウザから送信されたリクエストは、HTTP または HTTPS プロトコルを介して Web サーバに渡されます。リクエストは適切な Web コネクタで処理されます。Web コネクタには、NSAPI Web コネクタ、ISAPI Web コネクタ、および最適化された CGI Web コネクタがあり、それぞれ iPlanet、Microsoft、および CGI 互換の Web サーバ用です。
送信されたリクエストは、iPlanet Application Server の対応するリスナに渡されます。iPlanet Application Server のリスナには NSAPI リスナ、ISAPI リスナ、および最適化された CGI リスナがあり、それぞれ iPlanet、Microsoft、および CGI 互換の Web コネクタと通信します。
ロードバランスシステム
複数の iPlanet Application Server をインストールしている環境では、受信されたリクエストはまずロードバランスシステムを通ります。ロードバランスシステムは、リクエストを処理するのに最適なサーバにリクエストを送信します。ロードバランスシステムはロードモニタとロードバランサで構成されています。
ロードモニタ
ロードモニタは、管理者が指定した内部設定に基づいてサーバロードのスナップショットを取得します。次にリソースの可用性とシステムのパフォーマンスを一覧表にまとめます。
ロードバランサ
ロードバランサはロードモニタが取得したロードとパフォーマンスの情報を使って、送られてくるリクエストを処理するのに最適なリソースを持つサーバを決定します。iPlanet Application Server の各インスタンスには、ロードバランスのパラメータに基づいてルートを決定する独自のロードバランスモジュールがあります。管理者は、iPlanet Application Server Administrator を使ってパラメータを調整することができます。適切な iPlanet Application Server マシンに振り分けられたリクエストは、リクエスト管理システムに渡されます。
リクエスト管理システム
送信されたリクエストはリクエスト管理システムで処理されます。iPlanet Application Server には複数のスレッドがあり、リクエスト管理システムはダイナミックスレッドプールのスレッドを割り当ててリクエストを処理します。リクエスト管理システムでは、大量のリクエストを同時に処理することができます。システム管理者は、最適なリクエスト処理ができるようにスレッドプールのパラメータを設定することができます。リクエスト管理システムには次のようなサブシステムがあります。スレッドマネージャはスレッドのダイナミックプールを提供します。このプールから、リクエストを処理するスレッドが割り当てられます。
キューマネージャは、スレッドが利用できる状態になるまでリクエストをキューに入れておかなければならないときに使います。
キューマネージャは保留中のリクエストと記述的情報のリストを管理します。情報には、一意のリクエスト ID と、リクエストの現在の処理状況 (待機中、処理中、処理終了など) が含まれます。
システム管理者がリクエストログを有効に設定している場合、バックエンドデータベースまたはログファイルに Web サーバリクエストの情報ログが記録されます。
アプリケーションコンポーネント
受信した各リクエストは、1 つまたは複数のアプリケーションコンポーネントを識別します。次にこれらのコンポーネントは GUID (グローバルに固有な識別子) で識別されます。GUID は iPlanet Application Server のグローバルディレクトリサービス (GDS)、iPlanet Directory Server、および LDAP サーバで検証されます。GDS はアプリケーションコンポーネントの言語を判別し、リクエストの言語に適したハンドラを読み込みます。たとえば、Windows NT では .class ファイルは Java アプリケーションロジック用に読み込まれ、.dll ファイルは C++ アプリケーションロジック用に読み込まれます。UNIX では .class ファイルは Java アプリケーションロジック用に読み込まれ、共有ライブラリ (.so ファイル) が C++ アプリケーションロジック用に読み込まれます。
必要に応じて、iPlanet Directory Server は既知のロール情報でリクエストを検証して認証します。
次に適切なアプリケーションコンポーネントが実行され、リクエストが処理されます。たとえば、リクエストによって Servlet が起動され、次に 1 つまたは複数の EJB が呼び出されることがあります。
通常、リクエストの処理には、アプリケーションサービス、トランザクション管理システムその他のシステムサービスからの呼び出し機能が含まれます。たとえば、アプリケーションでステートとセッションの管理をしたり、ユーザのアカウントを更新するデータベースに接続することができます。
アプリケーションコンポーネントの詳細については、『iPlanet Application Server 開発者ガイド (Java)』を参照してください。
アプリケーションサービス
アプリケーションサービスでは、ユーザセッション、アプリケーションステート、cookie、電子メールによる通知、結果のキャッシュなどのアプリケーション機能を管理します。このようなサービスは API 呼び出しを使ってアプリケーションコンポーネントで起動します。アプリケーションサービスは KJS プロセス、KCS プロセス、またはその両方に読み込まれます。次の節では、Java および C++ アプリケーションで利用できるサービスについて説明します。
KJS または KCS で管理するサービス
表 A-2「Java または C++ クライアントで利用できるサービス」に、Java または C++ で作成したアプリケーションで利用できるサービスを示します。
表 A-2    Java または C++ クライアントで利用できるサービス
ユーザログイン、ページ移動情報、「ショッピングカート」の選択など、ユーザのセッション情報を管理する。持続的なステート情報を管理する。分散型 iPlanet Application Server マシンはステートのワークスペースを利用して情報を共有する
cookie を識別できる Web ブラウザ用に HTTP cookie を生成する。cookie を識別しないブラウザでは、エミュレートされた cookie が URL や隠しフィールドに埋め込まれる
データベーストランザクションを管理し、トランザクションへのコミットとロールバックのサポートを提供する。詳細については、「トランザクション管理システム」を参照してください。
リザルトセットのデータをキャッシュして、以降のリクエストをさらに効率よく処理できるようにする。リクエストが結果キャッシュに保存されていると、すでに計算された結果がすぐに返される。それ以外の場合は、アプリケーションロジックが実行され、結果が処理される。システム管理者は、キャッシュスロットの数、タイムアウト、キャッシュクリーニング間隔など、結果キャッシュの設定を指定できる
時間基準やほかのイベント基準にもとづいて、アプリケーションが電子メールを送受信して AppLogic を起動したり、(Java アプリケーションでは) Servlet を起動できるようにする。この機能は管理に便利である
企業アプリケーションが、iPlanet Application Server に展開したアプリケーションを統合できるようにする。コネクタは iPlanet Application Server にダイナミックに読み込まれる持続モジュールで、エクステンションが存在するかぎり複数の AppLogic または EJB からアクセスされる。コネクタはアプリケーションサービスとして動作するが、アプリケーションコンポーネントと見なすこともできる
KJS だけが管理するサービス
表 A-3「Java アプリケーションだけで利用できるサービス」に、Java で作成したアプリケーションだけで利用できるサービスを示します。
システムサービス
システムサービスを使うと、アプリケーションリクエストの処理効率が向上します。このサービスはアプリケーションで直接使われることはありませんが、アプリケーションロジックの範囲外でアプリケーションを補助的にサポートします。システムレベルのサービスには API のアクセスはありません。このサービスについての説明を表 A-4「システムサービス」に示します。次のサービスについては、この章で説明しているものもあります。
トランザクション管理システム
トランザクション管理システムはバックエンドデータベースへのアクセスをサポートします。
C++ アプリケーションは、Foundation Class Library とも呼ばれる iPlanet Application Server API で提供されるクラスやインターフェイスを使ってデータベースにアクセスします。
ローカルトランザクションとグローバルトランザクション
Java アプリケーションでは、iPlanet Application Server はローカルとグローバルの両方のトランザクションをサポートします。グローバルトランザクションは分散トランザクションとも呼ばれます。グローバルトランザクションは複数のデータベースにまたがり、データベースの種類が異なることもあります。グローバルトランザクションは、iPlanet Application Server に組み込まれた 2 階層コミットの Encina トランザクションマネージャを使って実行します。ローカルトランザクションでは、1 つのデータベースにアクセスします。複雑ではないのでアプリケーションのパフォーマンスが良くなります。
グローバルトランザクションは、EJB を介して宣言した場合だけ開始することができます。これとは対照的に、ローカルトランザクションは Servlet、JSP、EJB のどれかでプログラムした場合だけ開始することができます。
アーキテクチャの詳細
図 A-4「トランザクション管理システム」に、トランザクション管理システムのアーキテクチャの詳細を示します。
図 A-4    トランザクション管理システム ![]()
JDBC と iPlanet Application Server API はどちらもデータアクセスエンジンに依存してデータベースドライバと対話します。iPlanet Application Server は、Oracle、DB2、Informix、Sybase、および (Windows NT の場合だけ) SQLServer の各データベースドライバをネイティブでサポートしています。
トランザクション管理システムには Java Transaction API (JTA) も含まれます。JTA は 1 つのデータベースへのコネクションに使います。JTA はトランザクションマネージャともう一方のトランザクション要素 (iPlanet Application Server とトランザクションアプリケーションを含む) の間のローカル Java インターフェイスを指定します。JTA は業界標準の X/Open XA プロトコルの Java マッピングを提供します。このプロトコルは Encina トランザクションマネージャが使います。
データベースアクセスの詳細については、『iPlanet Application Server 開発者ガイド』および『iPlanet Application Server 管理者ガイド』を参照してください。
セキュリティ
iPlanet Application Server では、LDAP やその他のセキュリティプロトコルの使用によって、すべてのサブシステムでセキュリティがサポートされています。詳細については、『iPlanet Application Server 開発者ガイド』および『iPlanet Application Server 管理者ガイド』を参照してください。
管理サービス
管理サービスは、Administration Server プロセス (KAS) で実行されます。KAS により、サーバとアプリケーションをリモートで管理することができます。また、KAS では、アプリケーションのパーティション分割、イベントログ、リクエストの監視、主なサーバ設定値の動的設定などのサービスもサポートしています。管理サービスにアクセスするクライアントには、iPlanet Application Server Administration Tool、iPlanet Directory Server、およびサードパーティの SNMP エージェントがあります。
前へ 目次 索引 DocHome 次へ
Copyright © 2002 Sun Microsystems, Inc. All rights reserved.
最新更新日 2002 年 3 月 10 日