分散型のエンタープライズアプリケーションの対話型ソフトウェアコンポーネントには、基本となるインフラストラクチャーサービスのセットが必要です。 これに基づいて、分散しているコンポーネント間で相互に通信したり、それぞれの動作を調整したり、セキュリティー保護されたアクセスを実装することなどが可能になります。ここでは、これらのインフラストラクチャーサービスを提供するためにいくつかの Java ES コンポーネントが果たす主な役割について説明します。
分散型のソフトウェアシステムを設計する場合、そのほとんどがカスタム開発コンポーネントで構成されるか、または追加設定の必要ない Java ES コンポーネントで構成されるかにかかわらず、多数のインフラストラクチャーサービスを組み込む必要があります。これらのサービスは、多数のレベルで機能します。
ソリューションアーキテクチャーのインフラストラクチャーサービスの依存関係の次元 を、図 2–2 に示します。この図に示されているレベルは、図 1–1 のインフラストラクチャーサービス層を詳細化したものです。
図 2–2 のサービス階層とサービス間の依存関係が、ソリューションの論理アーキテクチャーの重要な次元を構成します。これらのインフラストラクチャーサービスは、Java ES システムサービスコンポーネント (「システムサービスコンポーネント」を参照) の役割を理解するための概念上の基礎になります。
一般的に、図 2–2 に示したサービスは、大きく 3 つのグループに分けられます。下位レベルのプラットフォームサービス、上位レベルのアプリケーションサービス、およびミドルウェアサービスのグループです。なお、ミドルウェアサービスという名前は、ほかの 2 つのグループの間にあることから付けられたものです。
次の各段落では、さまざまなインフラストラクチャーサービスレベルについて説明し、関連する場合には Java プログラミング言語のアーチファクトの参考情報も示します。図 2–2 に示された各サービスレベルについて、最下位レベルから順に説明します。
オペレーティングシステムプラットフォーム: コンピュータ上で実行されるすべてのプロセスに対し、基本的なサポートを提供します。オペレーティングシステム (SolarisTM オペレーティングシステム、Linux、Microsoft Windows など) は、物理デバイスのほかに、メモリー、スレッド、および JVMTM (Java Virtual Machine) マシンのサポートに必要なその他のリソースを管理します。
ネットワークトランスポート: 異なるコンピュータ上で実行されている分散型アプリケーションコンポーネント間での通信に必要な、基本的なネットワークサポートを提供します。これらのサービスには、TCP や HTTP などのプロトコルに対するサポートも含まれます。上位レベルのその他の通信プロトコル (「メッセージングレベル」を参照) は、これらの基本的なトランスポートサービスに依存しています。
持続: 静的データ (ユーザー、ディレクトリ、設定情報など) と動的アプリケーションデータ (頻繁に更新される情報) の両方に対するアクセスや格納に必要なサポートを提供します。
メッセージング: アプリケーションコンポーネント間の同期および非同期の通信に対するサポートを提供します。同期メッセージングでは、メッセージをリアルタイムで送受信します。 これには、J2EE コンポーネント間のリモートメソッドの呼び出し (RMI) や Web サービスとの SOAP 対話も含まれます。非同期メッセージングの通信では、直後に受信するコンシューマの準備状況に関係なく、メッセージを送信します。JMS (Java Message Service) や ebXML などの非同期メッセージングの仕様では、信頼性の保証およびその他のメッセージング方式をサポートします。
実行時: J2EE モデルや CORBA モデルなどの分散型のコンポーネントモデルで必要となるサポートを提供します。実行時サービスには、密接に結合された分散型コンポーネントに必要なリモートメソッドの呼び出しの他に、コンポーネントの状態 (ライフサイクル) の管理、スレッドプールの管理、同期 (相互排他ロック)、持続サービス、分散するトランザクションの監視、分散する例外の処理などが含まれます。J2EE 環境では、これらの実行時サービスはアプリケーションサーバーまたは Web サーバーの EJBTM、Web、およびメッセージ駆動型 Bean コンテナから提供されます。
セキュリティーとポリシー: アプリケーションリソースへのセキュリティー保護されたアクセスに必要なサポートを提供します。これらのサービスには、グループまたはロールに基づく分散型リソースへのアクセスを制御するポリシーのサポートや、シングルサインオン 機能が含まれます。シングルサインオンを使用すると、ある分散型システム内の 1 つのサービスに対するユーザー認証を、同じシステム内の他のサービス (J2EE コンポーネント、ビジネスサービス、Web サービスなど) に自動的に適用できます。
ユーザーの共同作業: ユーザー間の直接通信およびエンタープライズ内とインターネット環境内でのユーザー間の共同作業に対するサポートで重要な役割を果たすサービスを提供します。これらのサービスは、一般的にスタンドアロンサーバー (電子メールサーバーやカレンダサーバーなど) から提供されるアプリケーションレベルのビジネスサービスです。
統合: 既存のビジネスサービスを集約するサービスを提供します。ポータルと同様にサービスにアクセスするための共通インタフェースを提供するか、これらのサービスを本稼動ワークフロー内で調整するプロセスエンジンを使用し、統合することによって行います。統合は、異なる企業間における企業間 (B2B) 統合として行なわれることもあります。
図 2–2 に示したサービスレベルは、最下位レベルのオペレーティングシステムサービスから最上位レベルのアプリケーションサービスや統合サービスまで、さまざまなインフラストラクチャーサービス間の一般的な依存関係を反映しています。通常、各サービスはその下にあるサービスに依存し、その上にあるサービスをサポートします。
ただし、図 2–2 は、インフラストラクチャーサービスの厳密な階層を表しているわけではありません。上位レベルのサービスは、中間のレベルに依存せずに、下位レベルのサービスと直接対話することができます。たとえば、一部の実行時サービスは、中間にあるサービスレベルを介さずに、プラットフォームサービスに直接依存する場合があります。さらに、監視サービスや管理サービスなどのその他のサービスレベルも、ここでの概念的な説明に含まれることがあります。
Java ES コンポーネントは、図 2–2 に示した分散型インフラストラクチャーサービスレベルを実装したものです。Java ES システムサービスコンポーネントのさまざまなレベル内における位置関係を、図 2–3 に示します。
図 2–3 に示したオペレーティングシステムプラットフォームは正式には Java Enterprise System の一部ではありませんが、Java ES コンポーネントをサポートするオペレーティングシステムプラットフォームを示すために、この図に含めてあります。
一般に、図 2–3 に示した各 Java ES システムサービスコンポーネントは、インフラストラクチャー内でその下にあるコンポーネントに依存し、その上にあるコンポーネントをサポートします。それらの依存関係とサポートの関係は、論理アーキテクチャーを設計する上で重要な要素です。
表 2–1 に、Java ES システムサービスコンポーネント間の具体的な関係を示します。この表では図 2–3 と同様に、最上位から順に記載しています。
表 2–1 Java ES システムサービスコンポーネント間の関係
コンポーネント |
依存するサーバー |
サポートするサーバー |
---|---|---|
Portal Server |
Application Server または Web Server Access Manager Directory Server 対応するチャネルを使用するように設定されている場合Calendar Server Messaging Server Instant Messaging | |
Messaging Server |
Directory Server Access Manager (シングルサインオン用) |
Calendar Server (電子メール通知用) Portal Server (メッセージングチャネル用) |
Instant Messaging |
Directory Server Access Manager (シングルサインオン用) |
Portal Server (インスタントメッセージングチャネル用) |
Calendar Server |
Directory Server Messaging Server (電子メール通知サービス用) Access Manager (シングルサインオン用) |
Portal Server (カレンダチャネル用) |
Access Manager |
Application Server または Web Server Directory Server |
Portal Server シングルサインオン用に設定されている場合: Calendar Server Messaging Server Instant Messaging |
Application Server |
Message Queue Directory Server (管理オブジェクト用) |
Portal Server Access Manager |
Message Queue |
Directory Server (管理オブジェクト用) |
Application Server |
Web Server |
Access Manager (アクセス制御用) |
Portal Server Access Manager |
Directory Server |
なし |
Portal Server Calendar Server Messaging Server Instant Messaging Access Manager |
Service Registry |
なし |
Applcation Server に基づくコンポーネント |