Application Server は、多層エンタープライズアプリケーションを開発するための標準規格を定義する Java 2 Enterprise Edition (J2EE) 1.4 テクノロジを実装します。J2EE プラットフォームは、標準化されたモジュール型コンポーネントに基づく開発を可能にし、それらのコンポーネントに対するサービスの完全なセットを提供し、複雑なプログラミング不要でアプリケーション動作の細部の多くを自動的に処理することによって、エンタープライズアプリケーションを簡素化します。
J2EE アプリケーションは、JavaServer Pages (JSP)、Java サーブレット、Enterprise JavaBeans (EJB) モジュールなどのコンポーネントで構成されます。ソフトウェア開発者はこれらのコンポーネントを利用して、大規模分散アプリケーションを構築できます。開発者は J2EE アプリケーションを、zip ファイルに似た Java アーカイブ (JAR) ファイルにパッケージ化して本番サイトに配布できます。管理者は、J2EE JAR ファイルを 1 つ以上のサーバーインスタンス (またはインスタンスのクラスタ) に配備することにより、J2EE アプリケーションを Application Server 上にインストールします。
次の図は、以降の節で説明する J2EE プラットフォームのコンポーネントを示したものです。
J2EE のアプリケーションモデルでは、エンタープライズアプリケーションを 3 つの基本部品 (コンポーネント、コンテナ、およびコネクタ) に分割します。アプリケーション開発者が主に扱うのはコンポーネントであり、システムベンダーは、複雑さを隠蔽し移植性を促進するコンテナおよびコネクタを実装します。コンテナはクライアントとコンポーネントの間を仲介し、トランザクションサポートやリソースプーリングなどのサービスをその両者に透過的に提供します。コンテナの仲介により、コンポーネントの動作の多くを、プログラムコードで指定するのではなく配備時に指定することが可能になります。
Application Server では、各サーバーインスタンスには 2 種類のコンテナ (Web コンテナと EJB コンテナ) が含まれます。コンテナは、J2EE コンポーネントのセキュリティーやトランザクション管理などのサービスを提供する実行時環境です。JavaServer Pages (JSP) やサーブレットなどの Web コンポーネントは、Web コンテナ内で実行されます。Enterprise JavaBeans は EJB コンテナ内で実行されます。
J2EE プラットフォームのサービスは、アプリケーションプログラミングを簡素化します。また、配備環境で利用可能なリソースを使用するために、コンポーネントやアプリケーションを配備時にカスタマイズすることを可能にします。この節では、J2EE プラットフォームのネームサービス、配備サービス、トランザクションサービス、およびセキュリティーサービスの概要を示します。J2EE プラットフォームは、次のようなサービスをアプリケーションに対して提供します。
ネーミング -ネームサービスとディレクトリサービスは、オブジェクトを名前にバインドします。J2EE アプリケーションは、オブジェクトの Java Naming and Directory Interface (JNDI) 名を検索することによってオブジェクトを検出できます。
セキュリティー - Java Authorization Contract for Containers (JACC) は、J2EE コンテナに関して定義された一連のセキュリティー規約です。クライアントの ID に基づいて、コンテナはコンテナのリソースおよびサービスに対するアクセスを制限できます。
トランザクション管理 - トランザクションは作業の分割不能な単位です。たとえば、銀行口座間での資金の振り替えがトランザクションにあたります。トランザクション管理サービスは、トランザクションが完了するか、またはロールバックされるかの二者択一性を保証します。
メッセージサービス - 別々のシステム上でホストされたアプリケーションどうしが、Java™ Message Service (JMS) を利用してメッセージを交換することによって互いに通信できます。JMS は J2EE プラットフォームの根幹的な部分であり、異機種システム混在のエンタープライズアプリケーションを統合する作業を簡略化します。
クライアントは HTTP、RMI/IIOP、JMS 経由でのアクセスに加えて、リモート Web サービスとして J2EE 1.4 アプリケーションにアクセスできます。Web サービスは、Java API for XML-based RPC (JAX-RPC) を使用して実装されます。J2EE アプリケーションは Web サービスに対するクライアントとして動作することもでき、これはネットワークアプリケーションで典型的な構成です。
Web Services Description Language (WSDL) は、Web サービスのインタフェースを記述する XML 形式です。Web サービスのコンシューマは、WSDL ドキュメントを動的に解析して、Web サービスが提供する操作とその実行方法を特定できます。Application Server では、ほかのアプリケーションが Java API for XML Registries (JAXR) を経由してアクセス可能なレジストリを使用して、Web サービスインタフェースの記述を分散させています。
クライアントは複数の方法で J2EE アプリケーションにアクセスできます。ブラウザクライアントは、ハイパーテキストトランスファープロトコル (HTTP) を使用して Web アプリケーションにアクセスします。セキュリティー保護された通信のために、ブラウザでは、Secure Sockets Layer (SSL) を使用する HTTPS プロトコルを利用します。
アプリケーションクライアントコンテナ内で動作するリッチクライアントアプリケーションは、オブジェクトリクエストブローカ (ORB)、リモートメソッド呼び出し (RMI) および (IIOP) internet inter-ORB protocol、または IIOP/SSL (セキュリティー保護された IIOP) を使用して Enterprise JavaBeans (EJB) を直接検索し、アクセスできます。そのようなアプリケーションは、HTTP/HTTPS、JMS、および JAX-RPC を使用してアプリケーションや Web サービスにアクセスできます。それらのアプリケーションでは JMS を使用して、アプリケーションおよびメッセージ駆動型 Bean との間でメッセージを送受信します。
J2EE Web サービスにアクセスできるのは、WS-I Basic Profile (Web サービス相互運用性基本プロファイル) に準拠したクライアントです。WS-I は J2EE 標準の根幹的な部分であり、Web サービスの相互運用性について定義しています。WS-I に準拠することにより、サポートされているすべての言語で記述されたクライアントが、Application Server に配備された Web サービスにアクセスできます。
最適なアクセス機構は、個別のアプリケーションおよび予想されるトラフィック量によって異なります。Application Server は、HTTP、HTTPS、JMS、IIOP、および IIOP/SSL のそれぞれに対応した設定が可能なリスナーをサポートします。各プロトコルに対して複数のリスナーを設定し、スケーラビリティーと信頼性を高めることができます。
J2EE アプリケーションは、ほかのサーバー上に配備された EJB モジュールなどの J2EE コンポーネントのクライアントとしても動作でき、これらのアクセス機構のうち任意のものを使用できます。
J2EE プラットフォームでは、外部のシステムのことを「リソース」と呼びます。たとえば、データベース管理システムは JDBC リソースです。各リソースは、その Java Naming and Directory Interface (JNDI) 名によって一意に識別されます。アプリケーションは、次の API とコンポーネントを通して外部システムにアクセスします。
Java Database Connectivity (JDBC) - データベース管理システム (DBMS) は、データを格納、組織化、および取得するための機能を提供します。大部分のビジネスアプリケーションは、アプリケーションが JDBC 経由でアクセスするリレーショナルデータベースにデータを格納します。Application Server に含まれる PointBase DBMS は、サンプルアプリケーションでの使用、アプリケーション開発、プロトタイプ作成などの用途に適していますが、配備用途には適していません。Application Server では、各種の主要リレーショナルデータベースに接続するための、動作確認済み JDBC ドライバを提供しています。これらのドライバは配備に適しています。
Java Message Service (JMS) - メッセージングは、ソフトウェアコンポーネントまたはアプリケーション間で通信を行うための手段です。メッセージングクライアントは、Java Messaging Service (JMS) API を実装するメッセージングプロバイダを介して、任意のほかのクライアントとの間でメッセージを送受信します。Application Server には、高性能な JMS ブローカーである Sun Java System Message Queue が含まれています。Application Server Platform Edition には、Message Queue の無償版である Platform Edition が含まれます。Application Server Enterprise Edition には、クラスタ化とフェイルオーバーをサポートする Message Queue Enterprise Edition が含まれます。
J2EE コネクタ - J2EE コネクタアーキテクチャーは、J2EE アプリケーションと既存の企業情報システム (EIS) との統合を可能にします。アプリケーションは、「コネクタ」または「リソースアダプタ」と呼ばれる、移植性のある J2EE コンポーネントを介して、JDBC ドライバを使用した RDBMS へのアクセスと同様の方法で EIS にアクセスします。リソースアダプタは、スタンドアロンのリソースアダプタアーカイブ (RAR) モジュールとして配布されるか、または J2EE アプリケーションアーカイブに組み込まれます。RAR 形式のリソースアダプタは、ほかの J2EE コンポーネントと同様に配備されます。Application Server には、一般的な EIS との統合が可能な評価用のリソースアダプタが含まれています。
JavaMail - アプリケーションは JavaMail API を介して Simple Mail Transport Protocol (SMTP) サーバーにアクセスし、電子メールを送受信できます。