前へ     目次     索引     DocHome     次へ     
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 のサーバと説明 

内部サーバ

プロセス名

説明

Executive Server  

KXS  

ほとんどのシステムサービスを提供する (Administrative Server が管理する一部のサービスを含む)  

Administration Server  

KAS  

iPlanet Application Server の管理とフェールリカバリのためのシステムサービスを提供する  

Java サーバ  

KJS  

Java アプリケーションにサービスを提供する  


プロセス対話の要約

図 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 マシンを増設する

  • KJS および KCS のプロセス数を指定する

  • 各プロセスのスレッド数を保守する

高いパフォーマンスを提供すること以外にも、内部プロセスにより 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 コネクタ、ストリーミングサービス、およびプロトコルマネージャにより、最適化と優れたパフォーマンスが達成されます。

  • Web コネクタとリスナは Web サーバから iPlanet Application Server へのリクエストの送信を管理します。リスナは Web サーバからの要求を分散し、処理します。新しいリスナは HTTP ハンドラで追加します。

  • HTTP ストリーミングサービスは、iPlanet Application Server から Web サーバおよび Web ブラウザへのデータストリームを扱います。

  • iPlanet Application Server プロトコルマネージャは、ロードされたアクティブな全リスナにサービスを提供し管理します。プロトコルマネージャは HTTP、HTTPS (SSL を使った HTTP)、および IIOP をサポートします。

図 A-3「プロトコルマネージャ」に、プロトコルマネージャが iPlanet Application Server とクライアント (Web ベースまたは非 Web ベース) 間の通信を可能にする方法を示します。

図 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 管理  

cookie を識別できる Web ブラウザ用に HTTP cookie を生成する。cookie を識別しないブラウザでは、エミュレートされた cookie が URL や隠しフィールドに埋め込まれる  

データアクセス管理  

データベースへのアクセスを提供し管理する  

トランザクション管理  

データベーストランザクションを管理し、トランザクションへのコミットとロールバックのサポートを提供する。詳細については、「トランザクション管理システム」を参照してください。  

テンプレート管理  

データがユーザに返される前に、テンプレートを使ったリザルトセットデータのマージを管理する  

データベースコネクションキャッシュ  

データベースコネクションをキャッシュして、今後同じデータベースにアクセスした場合にすぐに提供できるようにする  

結果キャッシュ  

リザルトセットのデータをキャッシュして、以降のリクエストをさらに効率よく処理できるようにする。リクエストが結果キャッシュに保存されていると、すでに計算された結果がすぐに返される。それ以外の場合は、アプリケーションロジックが実行され、結果が処理される。システム管理者は、キャッシュスロットの数、タイムアウト、キャッシュクリーニング間隔など、結果キャッシュの設定を指定できる  

アプリケーションイベント  

時間基準やほかのイベント基準にもとづいて、アプリケーションが電子メールを送受信して AppLogic を起動したり、(Java アプリケーションでは) Servlet を起動できるようにする。この機能は管理に便利である  

HTML ストリーミング  

データをストリーミングして HTML クライアントにデータを効率よく返せるようにする  

コネクタ  

企業アプリケーションが、iPlanet Application Server に展開したアプリケーションを統合できるようにする。コネクタは iPlanet Application Server にダイナミックに読み込まれる持続モジュールで、エクステンションが存在するかぎり複数の AppLogic または EJB からアクセスされる。コネクタはアプリケーションサービスとして動作するが、アプリケーションコンポーネントと見なすこともできる  


KJS だけが管理するサービス

表 A-3「Java アプリケーションだけで利用できるサービス」に、Java で作成したアプリケーションだけで利用できるサービスを示します。

表 A-3    Java アプリケーションだけで利用できるサービス

アプリケーションサービス

説明

JSP コンパイラ  

JSP タグを解釈する。JSP タグは HTML タグに似ており、Web ブラウザに送信されるページのレイアウトを決定する。このコンパイラは JavaServer Pages 仕様のバージョン 0.92 をサポートする  

Servlet コンテナ  

リクエストや応答が設定されるネットワークサービスを提供し、MIME ベースのリクエストをデコードし、MIME ベースの応答を作成して、ライフサイクル期間中の Servlet を保持し管理する。HTTP および HTTPS をサポートする  

EJB コンテナ  

EJB にホームを提供し、ホーム内のビーンを管理する。管理には、ビーンの登録、ビーン用のリモートインターフェイスの提供、インスタンスの作成と削除、セキュリティチェック、セキュリティ活動状況の管理、および分散トランザクションの調整が含まれる。EJB コンテナでビーン内の持続データをすべて管理し、グローバルトランザクションを完全に管理することもできる  

分散トランザクション  

異なるタイプや異なる場所の複数のデータベースを扱うトランザクションをサポートする。分散トランザクションは EJB で起動され、iPlanet Application Server に組み込まれたトランザクション処理マネージャが使用される  

LDAP サポート  

セントラルリポジトリにユーザ、グループ、およびアクセス制御リストの情報を渡して、管理やセキュリティ管理を簡単に行えるようにする。iPlanet Application Server に付属する LDAP クライアントには、iPlanet Application Server Administration Tool と iPlanet Directory Server が含まれている  


システムサービス

システムサービスを使うと、アプリケーションリクエストの処理効率が向上します。このサービスはアプリケーションで直接使われることはありませんが、アプリケーションロジックの範囲外でアプリケーションを補助的にサポートします。システムレベルのサービスには API のアクセスはありません。このサービスについての説明を表 A-4「システムサービス」に示します。次のサービスについては、この章で説明しているものもあります。


表 A-4    システムサービス 

システムサービス

説明

プロトコル管理  

iPlanet Application Server が使うさまざまなプロトコルをサポートして、クライアントとの通信を管理する  

リクエスト管理  

サーバに送られたリクエストを適切なプロセス (Java サーバまたは C++ サーバ) に転送し、リクエストスレッドを割り当てて、リクエストを管理する  

グローバルディレクトリサービス  

アプリケーションコンポーネントのプログラミング言語を決定し、適切なサーバプロセス (KJS または KCS) に読み込めるようにする  

JNDI  

Java Naming and Directory Interface (JNDI) は Java プラットフォームの標準拡張。JNDI API は、企業の複数のネーミングサービスやディレクトリサービスに対する統一インターフェイスを Java アプリケーションに提供する  

イベントログ

 

アプリケーションロジックの実行ログを維持する。アプリケーション開発者は、アプリケーションロジックのログを有効にしてデバッグとチューニングに役立てることができる。また、システム管理者はイベントログを自動化し、ユーザリクエストを処理する際に DLM (dynamically loadable module) とアプリケーションロジックオブジェクトで生成されるメッセージを記録することができる。イベントログはあらゆるプロセスで実行できる  

ロードバランス  

複数のサーバ間でアプリケーションリクエストのロードバランスを保つ方法を指定する  

アプリケーションリクエストキャッシュ  

アプリケーションリクエストをキャッシュし、今後同じユーザからの同じアプリケーションコンポーネントへのリクエストがあった場合にすぐに対応できるようにする  

非同期処理  

別々に届く複数のリクエストを同時に処理する  

フェールリカバリ  

Executive Server、Java サーバ、または C++ サーバのプロセスが利用できなくなった場合に、これらのサーバを再起動する  

分散データ同期  

データの同期を取ってフェールリカバリをサポートする。iPlanet Application Server で実行中の KJS プロセスや KCS プロセス間だけでデータの同期を取るのではなく、クラスタにインストールされたすべての iPlanet Application Server 間でデータの同期を取る  

SNMP サポート  

SNMP エージェントを介した iPlanet Application Server へのアクセスを提供し、サードパーティの管理ツールによるリモート管理を可能にする  

カーネルサービス  

ほかのすべてのサービスやサブシステムに低レベルのサービスを提供する。カーネルサービスの例としては、言語バインドエンジンやロックマネージャがある  


トランザクション管理システム

トランザクション管理システムはバックエンドデータベースへのアクセスをサポートします。

  • C++ アプリケーションは、Foundation Class Library とも呼ばれる iPlanet Application Server API で提供されるクラスやインターフェイスを使ってデータベースにアクセスします。

  • Java アプリケーションは標準の JDBC 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 日