トピック

概論 To top of page

急速な進展を遂げる今日の e-ビジネスの世界では、複雑な分散アプリケーションが使用されるため、エンタープライズ・アプリケーションを迅速にマーケットに展開することが重要です。このことは、プロジェクト・チームがリモート接続、命名、永続性、セキュリティー、トランザクション管理などのシステム・レベル・サービスの開発に時間をかける余裕がないことを意味します。プロジェクト・チームは、移植性があり再利用可能なコンポーネントを開発および活用する必要があり、実証済みのアーキテクチャーを再び開発するために時間を費やすことはできません。

Java™ 2 Platform, Enterprise Edition (J2EE™) は、分散、多層、コンポーネント・ベースの Java アプリケーションの開発と実行に対し、十分に文書化された標準準拠のフレームワークを提供することによって、この要求に対応します。このフレームワークは、リモート接続、命名、永続性、セキュリティー、トランザクション管理といったアプリケーションの下位レベルの複雑性の大部分を処理するため、開発者はアプリケーションのビジネス論理に集中できます。

J2EE プラットフォームは次のものから構成されます。

  • J2EE コンポーネントとコンポーネントが稼動する J2EE プラットフォームの標準のセット。
  • アプリケーション開発のための青写真。J2EE プラットフォームを詳細に記述し、J2EE アプリケーション開発方法についての業界標準の最善の実践原則情報を提供します。
  • J2EE プラットフォームのリファレンス実装。商用 J2EE 製品を評価する基準として Sun Microsystems Inc. によって提供されます。リファレンス実装は、完全に開発されたサンプル・アプリケーションを含みます。
  • J2EE 標準を基準とした商用 J2EE 実装のテストと評価のための互換性テスト製品群。

J2EE プラットフォームは、コンピューターのオペレーティング・システムが提供するサービスに類似しています。オペレーティング・システムは、プログラミング・ツールを使用することによって、標準的なサービスを提供します。そのため、このサービスに基づいて、ディスク・アクセス、メモリー、ビデオ出力、ネットワークといった下位レベルの管理を考慮することなく、アプリケーションを開発および実行できます。 ユーザーは、下位レベルのシステムの詳細を考慮することなく、アプリケーションの詳細に取り組むことができます。J2EE プラットフォームは、エンタープライズ・アプリケーションの高度なオペレーティング・システムを提供します。

J2EE プラットフォームの使用によって開発作業を簡素化できるので、プロジェクト・チームは、貴重な開発時間をシステム・レベルの問題解決に費やすことなく、実際のアプリケーションのビジネス論理に集中できます。プロジェクト・チームがアプリケーションの振る舞いに集中でき、アプリケーションが必要とする下位レベルのすべてのサービスを実現する方法については考慮しなくてもよくなると、ユーザーの要求に見合ったシステムを期限どおりにバグなしで納品できる可能性が高くなります。

詳しくは、http://java.sun.com/ の Sun の J2EE プラットフォームの概要を参照してください。「Products & APIs」、「Java™ 2 Platform, Enterprise Edition (J2EE™)」、「Overview」のリンクに従って参照してください。

J2EE 開発の概説To top of page

アプリケーション開発者の観点からは次のようになります。

  • J2EE 準拠サーバー形式の商用 J2EE プラットフォームを購入します。 J2EE サーバーの振る舞いは、J2EE 標準で定められています。
  • J2EE コンポーネントを開発するか、または既製のコンポーネントを購入します。
  • J2EE コンポーネントを J2EE 準拠サーバー上に導入し、実行します。これにより、J2EE コンポーネントが必要とするすべてのサービスが提供されます。

To top of page

簡単な J2EE アプリケーションの例は、e-コマース・サイトです。ここでは、クライアント (ユーザー) が Web ブラウザーを使用して J2EE サーバーにリモートからアクセスします。J2EE サーバーは、Web 層ビジネス層のサービスを提供し、RDBMS アクセスを提供する EIS (Enterprise Information Systems) 層 (バックエンド層) と相互作用します。

J2EE を使用する理由To top of page

次に述べる記述のいずれかに該当する場合、Java e-コマースまたはエンタープライズ・アプリケーションの開発に J2EE プラットフォームの使用をお勧めします。

このセクションの以降の部分で、これらの点を詳しく説明します。

標準化された、業界で検証済みのフレームワークTo top of page

J2EE コンポーネントは、J2EE コンテナーで稼動し、通常、J2EE 準拠サーバーの一部として提供されます。 これらのコンテナーは、J2EE コンポーネントで使用される標準サービス (API) のセットを提供します。API は次のとおりです。

  • J2SE 1.4
    • JDBC
    • Java IDL
    • Remote Method Invocation with CORBA's Internet Inter-ORB Protocol (RMI-IIOP)
    • Java Naming and Directory Interface (JNDI)
    • Java Authentication and Authorization Service (JAAS)
  • Java Transaction API (JTA)
  • JavaMail
  • Java Message Service (JMS)
    JMS について詳しくは、『概念: Java Messaging Service』を参照してください。
  • JavaBeans Activation Framework (JAF)
  • Enterprise JavaBeans (EJB)
  • Java サーブレット
  • Java API for XML Processing (JAXP)
  • Java Connector (メモ: J2EE 1.3 より前ではサポートしていません)
  • JavaServer Pages (JSP)
  • Web Services for J2E (メモ: J2EE 1.4 より前ではサポートしていません)
  • Java API for XML-based RPC (JAX-RPC) (メモ: J2EE 1.4 より前ではサポートしていません)
  • SOAP with attachments API for Java (SAAJ) (メモ: J2EE 1.4 より前ではサポートしていません)
  • Java API for XML Registries (JAXR) (メモ: J2EE 1.4 より前ではサポートしていません)
  • J2EE Management (メモ: J2EE 1.4 より前ではサポートしていません)
  • Java Management Extensions (JMX) (メモ: J2EE 1.4 より前ではサポートしていません)
  • J2EE Deployment (メモ: J2EE 1.4 より前ではサポートしていません)
  • Java Authorization Service Provider Contract for Containers (JACC) (メモ: J2EE 1.4 より前ではサポートしていません)

移植性 To top of page

J2EE コンポーネントとアプリケーションは、J2EE 準拠サーバー間でコード変更をしないで移植が可能なため、XML (eXtended Markup Language) 形式の配置記述子ファイルに含まれるサーバー固有の導入情報を更新するだけで、選択した J2EE 準拠サーバーにアプリケーションを導入できます。

J2EE 仕様の標準化により業界内の競争が激しくなったため、ユーザーは予算と要求に応じてさまざまな J2EE 準拠サーバーを選択できます。

再利用可能なコンポーネントTo top of page

J2EE コンポーネントは J2EE 標準に準拠しているため、必要に応じて既製の J2EE コンポーネントを購入し、J2EE アプリケーションにプラグインとして埋め込むことができます。これにより、開発 (特にデバッグとテスト) の作業量を削減できます。

コンポーネントを開発する場合、必要に応じてそのコンポーネントをほかのアプリケーションで再利用するか、別の J2EE 準拠サーバーに導入できます。

立証済みのアーキテクチャーと設計パターンTo top of page

J2EE プラットフォームは、十分に構造化された多層アプリケーション・アーキテクチャーを定義します。J2EE アーキテクチャーを活用することによって、開発者はアプリケーションの実際のビジネス論理の開発に迅速に取り組むことができます。

J2EE 文書には次のものがあります。

  • アプリケーション開発のための青写真。J2EE プラットフォームを詳細に記述し、J2EE アプリケーション開発方法についての最善の実践原則情報を提供します。
  • 十分に文書化された J2EE パターン (業界の最善の実践原則)。一般的な J2EE アーキテクチャーと設計の問題の解決法を記述しています。

J2EE プラットフォームについて詳しくは、http://java.sun.com/ を参照してください。「J2EE」、「Blueprints」のリンクに従って参照してください。

スケーラビリティーTo top of page

J2EE は、パフォーマンスを改善したり増大する負荷に対応したりするためのスケーラビリティーを次の方法でサポートします。

  • J2EE コンテナーのパフォーマンス向上機能 - リソース・プーリング (データベース接続プーリング、セッション Bean インスタンス・プーリング、スレッド・プーリング)、非同期メッセージ・パッシング、効率的なコンポーネント・ライフサイクル管理などの機能があります。例えば、データベース接続のオープンには時間がかかります。また、ライセンスの制限などにより、データベース接続リソースの使用が制限される可能性があります。J2EE プラットフォームは、データベース接続プーリングを使用してこれを管理します。J2EE コンテナーが必要に応じて、コンポーネントに割り当てられるオープンな接続のプールを保持するので、迅速で効率的な接続が実現します。
  • クラスタリングによるロード・バランシングの実現 - 同一のコンポーネントを別のコンピューターの複数のサーバーに導入します。各サーバーの負荷は、ラウンドロビン・アルゴリズムやサーバーの負荷などに基づいて、必要に応じてバランシングされます。J2EE プラットフォームの仕様では、J2EE サーバーでのロード・バランシング機能を必要としませんが、ハイエンドなサーバーにはその機能を推奨しています。J2EE サーバー・ベンダーは、さまざまなロード・バランシングの解決法を提供しています。
  • アプリケーションの分割 - アプリケーションで論理的に区別できる部分は、別のサーバーに導入できます。例えば、オンライン・メール・オーダー・アプリケーションの在庫リストと会計サブシステムは別のサーバーに導入できます。

開発と導入ツールTo top of page

ベンダーは、次に示す Java Integrated Development Environment (IDE) での J2EE 開発に対する優れたサポートによって J2EE ツールへの要求に応えてきました。

  • サーブレット作成ウィザード
  • EJB の作成と保守用ウィザードとダイアログ
  • 配置記述子の生成と保守
  • EJB オブジェクトからデータベースへのマッピング (コンテナー管理による関係 (CMR) のための配置記述子情報の生成など)
  • Web サービスのテスト用の Web コンテナーの統合
  • J2EE EJB コンテナーとその導入ツールの統合による、シームレスな IDE での EJB の導入、デバッグ、テスト
  • J2EE テスト・クライアントの自動生成
  • UML モデリング・ツールとの統合

バックエンドの統合To top of page

バックエンドは、アプリケーションの EIS (enterprise information system) 層を参照します。バックエンド・システムには、RDBMS、レガシー・システム、ERP (enterprise resource planning system) などがあります。

J2EE は、JDBC や JTA API を使用して、RDBMS EIS へのトランザクション・アクセスをサポートします。 さらに、EJB コンテナーは、コンテナー管理による永続性 (CMP) をサポートしているので、コンテナーによってトランザクションの RDBMS 接続とアクセスが自動的に処理されます。

J2EE のコネクター・アーキテクチャー SPI (Service Provider Interface) は、DBMS ではない EIS リソースの J2EE コンテナーへの接続の標準を定義します。 EIS 固有のリソース・アダプター (EIS ベンダーによって供給される) は、J2EE コンテナーにプラグインされ、コンテナーを拡張するので、その EIS に対してセキュアなトランザクション・サポートを提供します。それにより、コンテナーのコンポーネントは、J2EE コネクター・アーキテクチャー SPI を介して EIS にアクセスできます。

メモ: J2EE のコネクター・アーキテクチャー SPI は、J2EE 1.3 より前ではサポートしていません。

セキュリティーTo top of page

J2EE は簡単で強力なセキュリティー機能を提供しています。J2EE コンポーネントに対するセキュリティー情報は、配置記述子で定義されます。この情報は、どのセキュリティー・ロールが特定の URL やコンポーネントのメソッドへのアクセスの権限を持つかを定義します。 セキュリティー・ロールは、ユーザー・グループに対する単なる論理名です。例えば、組織のすべての管理チーム・メンバーを「managers」という名前のロールに割り当てることもできます。

セキュリティー情報は配置記述子で宣言されるので、セキュリティーの振る舞いは、コストのかかるコード更新-デバッグ-テストのサイクルを使用せずに変更できます。

多層アーキテクチャーTo top of page

J2EE は、クライアント層中間層EIS またはバックエンド層で構成される多層分散アプリケーション・アーキテクチャーです。

図 1 は、J2EE コンポーネントをサポートするさまざまな J2EE コンテナーと、J2EE プラットフォームの多層アーキテクチャーを示しています。

本文の説明に関連する図

図 1: J2EE 多層アーキテクチャー

クライアント層To top of page

クライアント層コンポーネントは、クライアント・コンテナー内で実行されます。クライアント層は次の方法で実装できます。

  • スタンドアロンの Java アプリケーション - 通常は GUI です (「thick client」ということもあります)。このような Java アプリケーションは、すべてのクライアント・コンピューターにインストールする必要があります。Java アプリケーションは、JDBC などの API を介して EIS 層や中間層にアクセスできます。
  • 静的 HTML ページ - アプリケーションに対して限られた GUI を提供します。
  • 動的 HTML - JSP ページサーブレットで生成されます。
  • アプレット - Web ブラウザーで動作します。アプレットは、HTML ページに埋め込まれ、通常は GUI の提供に使用されます。

中間層To top of page

中間層は、Web 層ビジネス層から構成されます。Web 層コンポーネントは、Web コンテナーを提供する J2EE Web サーバーで動作します。ビジネス層コンポーネントは、EJB コンテナーを提供する J2EE アプリケーション・サーバーで動作します。

Web 層To top of page

Web 層コンポーネントには、サーブレットJSP ページがあり、クライアント層との相互作用を管理し、クライアントをビジネス層と EIS 層から分離します。 クライアントは Web 層の要求を作成し、Web 層は要求を処理して結果をクライアントに返します。一般的に、Web 層のコンポーネントへのクライアントの要求は、ビジネス層のコンポーネントへの Web 層の要求になります。それがさらに EIS 層への要求になることもあります。

ビジネス層To top of page

ビジネス層コンポーネントは、EJB です。

  • EJB には、アプリケーション・ ビジネス論理が含まれます。
  • EJB は、通常は Web 層からの要求への応答として、ビジネス論理に従って EIS 層に要求を発行します。

EIS 層To top of page

EIS 層は、多くの場合にアプリケーションの格納データを RDBMS の形式で表します。EIS 層は、レガシー・システムや ERP から構成されることもあり、その場合は J2EE コネクター・アーキテクチャー API を介してアクセスします。

J2EE コネクター・アーキテクチャー API について詳しくは、http://java.sun.com/ を参照してください。「Products & Technologies」、「J2EE」、「J2EE Connector Architecture」のリンクに従って参照してください。

J2EE 標準の導入構成について詳しくは、『概念: J2EE 導入構成』を参照してください。

J2EE サーバーTo top of page

J2EE サーバーは J2EE プラットフォームを実装する商用製品です。商用 J2EE サーバーには、BEA WebLogic、Borland Enterprise Server、IBM WebSphere、iPlanet などがあります。

「J2EE サーバー」という用語の使用には、あいまいな部分があります。通常は、「Web コンテナーと EJB コンテナーの両方をサポートする J2EE サーバー」を意味します。厳密にいえば、J2EE Web サーバー (J2EE 参照 Web サーバー実装 Tomcat など) は Web コンテナーをサポートし、J2EE アプリケーション (または EJB) サーバーは EJB コンテナーをサポートします。

J2EE コンテナーTo top of page

J2EE コンポーネントは、一般に商用 J2EE サーバーの一部として提供される J2EE コンテナーで動作するか、そこでホスティングされます。コンテナーは、標準 J2SE API のサポートに加えて、コンテナーで稼動する J2EE コンポーネントに実行時環境とサービス (API) の標準セットを提供します。

J2EE は次のコンテナー・タイプを定義します。

アプリケーション・クライアント・コンテナーTo top of page

J2EE アプリケーション・クライアントは、アプリケーション・クライアント・コンテナーで動作します。このコンテナーは、次の J2EE API をサポートします。JDBC、 JMS、JAXP、JAAS、JavaMail、JAF、JSR、JAX-RPC、SAAJ、J2EE Management、JMX。

実際には、アプリケーション・クライアント・コンテナーは、標準の J2SE インストールで構成されます。アプリケーション・クライアント・コンテナーは、Web コンテナーと EJB コンテナーでほかのエンタープライズ・アプリケーションのセキュリティー制約を満たすために、JAAS コールバック・ハンドラー・インターフェースをサポートする必要があります。

アプレット・コンテナーTo top of page

アプレットは、アプレット・プログラミング・モデルと標準 J2SE API をサポートするアプレット・コンテナーで動作します。実際には、アプレット・コンテナーは、Web ブラウザーへの Java プラグインとして提供されます。

Web コンテナーTo top of page

Web コンポーネント (JSP ページサーブレット) は、J2EE サーバーの一部としてまたはスタンドアロンの J2EE Web サーバーとして提供された Web コンテナーで動作します。Web コンテナーは、次の J2EE API とパッケージをサポートします。JDBC、JMS、JAXP、JAX-RPC、JAXR、JAAS、Java Mail、JAF、J2EE コネクター・アーキテクチャー、JTA、 SAAJ、J2EE Management、Java サーブレット、JSP。

EJB コンテナーTo top of page

EJB コンポーネントは、J2EE サーバーの一部として提供された EJB コンテナーで動作します。

EJB コンテナーは、次の J2EE API とテクノロジーをサポートします。EJB、JDBC、JMS、JAXP、JAX-RPC、JAXR、JAAS、Java Mail、JAF、JTA、JSR、SAAJ、J2EE Management、J2EE コネクター・アーキテクチャー。

次のサブセクションで、EJB コンテナーがサポートする主要な機能の概要を説明します。

リモート・コミュニケーション To top of page

EJB コンテナーは、EJB インターフェースを実装するコンテナー提供のクラス (クライアントが使用する RMI スタブ・クラスと共に EJB のコンパイル時にコンテナー・ツールによって生成されます) を使用することによって、開発者からリモート・コミュニケーションの複雑さを隠蔽します。 これらの実装クラスは、クライアントが Java RMI を使用してアクセスできるリモート Java オブジェクトです。クライアントから見ると、クライアントは EJB インターフェース上でメソッドを単に呼び出せばよく、リモート・コミュニケーションを考慮する必要はありません。

並行性 To top of page

EJB コンテナーは、複数クライアントからの並行した要求を透過的に管理します。クライアントは、EJB に排他的にアクセスしているのと同様に動作できます。例えば、2 つのクライアントが同じエンティティー EJB を要求した場合、コンテナーはそれぞれにインスタンスを提供し、クライアントから認識されないように内部的に同期を管理します。

命名 To top of page

EJB コンテナーは、コンテナーに導入された EJB を検索するために JNDI 名前空間を提供します。EJB クライアントは、EJB をルックアップして、ホーム・インターフェースを取得できます。EJB のホーム・インターフェースは、EJB インスタンスの検索と作成のメソッドを提供します。JNDI 命名コンテキストがクライアントの場所から使用可能である限り、クライアントは EJB にアクセスできます。

永続性 To top of page

EJB 開発者は、エンティティー EJB 永続データのストレージのために、コンテナー管理による永続性 (CMP) と Bean 管理による永続性 (BMP) の 2 つのスキーマから選択します。CMP ではデータ・アクセスのコードの実装の責務をコンテナーに委譲しますが、BMP では EJB 開発者がコードの実装に責任を持ちます。CMP では、EJB 開発者は、配置記述子のコンテナー管理フィールドを宣言するだけで、永続ストレージへのアクセスの標準的な実装を使用できます。

トランザクション管理To top of page

トランザクションとは、1 つのつながりとして成功するかまたは失敗する一連の操作を意味します。つまり、一連の操作のうちのいずれかが失敗した場合、システム状態は変更されません。例えば、航空券を発行する場合、顧客のクレジット・カード口座を確認し、その口座の借方に記入し、航空券を発行します。この一連の操作は、単一のトランザクション内で発生する必要があります。そうすれば、いずれかの操作が失敗した場合、顧客のクレジット・カード口座には何の変更もなく、航空券も発行されません。

EJB は Bean 管理によるトランザクション区切りまたはコンテナー管理によるトランザクション区切りのどちらかを使用できます。これらについては、次の 2 つの見出しで説明します。

Bean 管理によるトランザクション区切りTo top of page

Bean 管理によるトランザクション区切りでは、トランザクション境界を区切るために簡単な API を使用します。これは、Java Transaction API (JTA) であり、トランザクションの区切りをプログラミング的に制御するために使用します。例えば、JTA UserTransaction インターフェースのメソッド begin()commit()rollback() の呼び出しなどです。開発者は、コンテナーが自動的に処理することができないトランザクションの例外条件のためにロールバック論理をコーディングする責任があります。

メモ: エンティティー EJB は、Bean 管理によるトランザクション区切りを使用できません。コンテナー管理によるトランザクション区切りのみを使用できます。

コンテナー管理によるトランザクション区切りTo top of page

コンテナー管理によるトランザクション区切りでは、トランザクションの開始と終了のコードを作成しません。代わりに、EJB の各メソッドに対して EJB 配置記述子でトランザクション属性情報を提供します。トランザクション属性 (Required、RequiresNew、NotSupported、Supports、Mandatory、Never のいずれか) によって、コンテナーは、メソッドがどのトランザクション・スコープを使用するかを区別します。例えば、あるトランザクション内でクライアントを実行中に、トランザクション属性が Required に設定された EJB のメソッドを呼び出す場合、メソッドはその既存のトランザクション・スコープ内で呼び出されます。

可能な限り、Bean 管理によるトランザクション区切りではなく、コンテナー管理によるトランザクション区切りを使用してください。それによって、コンポーネントでトランザクション区切りコードを追加、デバッグ、テストする必要がなくなります。代わりに、各 EJB メソッドのトランザクションの振る舞いが導入時に配置記述子で特定されます。これは、トランザクションの振る舞いが、コストのかかるコードの更新-デバッグ-テストのサイクルなしで変更できることを意味します。

分散トランザクションTo top of page

分散トランザクションは、複数データベースや複数アプリケーションの間での調整が必要なトランザクションです。これは、単一の J2EE アプリケーション・サーバーが単一のデータベースへトランザクションをコミットするような集中化したトランザクションとは対照的です。

複数のデータベースを更新する場合などの分散トランザクションでは、2 フェーズ・コミットが必要です。EJB コンテナー (BEA WebLogic Server 6.0 など) には、The Open Group の XA プロトコルを使用して 2 フェーズ・コミットをサポートするものもあります。アプリケーション・プログラマーは、2 フェーズ・コミットを処理するためにコードを作成する必要はありません。EJB コンテナーがこのコードを管理します。

セキュリティー管理To top of page

EJB のセキュリティーは、配置記述子のセキュリティー情報を使用して EJB コンテナーが処理します。配置記述子では、ロールのセットを宣言し、各 EJB メソッドに対してメソッド呼び出し権限があるロールを宣言します。

実行時には、EJB の各クライアントはロールに割り当てられ、EJB コンテナーはクライアント・ロールにメソッド呼び出し権限があるかどうかチェックすることで、EJB のメソッドへのアクセスを管理します。

セキュリティー情報は配置記述子で宣言されるので、セキュリティーの振る舞いは、コストのかかるコード更新-デバッグ-テストのサイクルを使用せずに変更できます。

ライフサイクル管理To top of page

EJB は、クライアントの要求に応じてライフサイクルの一連の状態の間を遷移します。EJB コンテナーは、このライフサイクルの管理を担当します。

コンテナーの開始時には、コンテナーが EJB インスタンスのプールをリソース・プールに作成します (これにより、EJB リソースが必要なときに開始時間を節約できます)。EJB クライアントが EJB の作成を要求した場合、インスタンスがプールから割り当てられます。クライアントは EJB の要求を作成できます。EJB クライアントが EJB の削除を要求した場合、そのインスタンスがプールに返されます。

コンテナーは、次に示すような標準のコールバック・メソッドのセットを使用して、EJB ライフサイクルでのさまざまなイベントを EJB インスタンスに通知します。

  • ejbCreate() - EJB インスタンスが作成された後に、コンテナーによって呼び出されます。
  • ejbRemove() - EJB インスタンスが削除される直前に、コンテナーによって呼び出されます。
  • ejbActivate() - EJB インスタンスがパッシブな状態からリストアされた後に、コンテナーによって呼び出されます。
  • ejbPassivate() - EJB がパッシブになる直前に、コンテナーによって呼び出されます。
  • ejbStore() - EJB インスタンスがデータベースに書き込まれる直前に、コンテナーによって呼び出されます。
  • ejbLoad() - EJB インスタンス・フィールドがデータベースからロードされた後に、コンテナーによって呼び出されます。

各 EJB は、これらのコールバックを実装する必要がありますが、コールバック・メソッドの EJB の実装は多くの場合に空です。例えば、コンテナーは、EJB が削除されようとしている (EJB を削除するクライアント要求が存在する) ことを EJB に通知するために、EJB の ejbRemove() メソッドを呼び出します。EJB の ejbRemove() メソッドでは、EJB が保持しているリソースの解放など、EJB を削除する前に必要なすべての操作をコーディングします。

EJB はコンテナーからの要求に従ってパッシブ化 (状態情報が保管され、リソース・プールで使用するために EJB インスタンスが解放される) できます。パッシブ化された EJB は、その特定の EJB オブジェクトへのクライアント要求を受け取った場合、コンテナーによってアクティブ化 (状態情報がリストアされる) されます。

データベース接続プーリングTo top of page

データベース接続のオープンには時間がかかります。また、ライセンスの制限などにより、データベース接続リソースの使用が制限される可能性があります。EJB コンテナーは、データベース接続プーリングによって問題に対処します。コンテナーは、オープンな接続のプールを保持し、必要に応じて EJB に割り当てたり割り当てを解除したりするので、迅速で効率的な接続を実現します。

CMP を使用するエンティティー EJB の場合は、データベース接続が自動的に処理されます。接続や SQL コードを書く必要はありません。EJB 配置記述子で JDBC データ・ソースの JNDI 名を特定し、コンテナー固有の導入ツールを使用して接続ルーチンを生成するだけです。コンテナーがデータベース接続プールを管理します。

BMP を使用するエンティティー EJB やセッション EJB の場合は、JDBC データ・ソースに接続するための接続コードと、データベースにアクセスするための SQL コードを書く必要があります。JDBC データ・ソースは、コンテナーによって管理されています。実際には、JDBC データ・ソースはコンテナーによって管理されるデータベース接続プールを使用します。

メッセージングTo top of page

EJB コンテナーは、非同期のメッセージ交換のためのメッセージング・サポートを提供する必要があります。メッセージ駆動型 EJB プロセスによって配信されるメッセージでは、JMS などのメッセージング・タイプを使用できます。JMS は EJB に関連しているので、サーブレット、JSP ページ、EJB などの Web コンテナー・コンポーネントおよび EJB コンテナー・コンポーネントからのトランザクション・アクセスをサポートする必要があります。

J2EE コンポーネントTo top of page

次のセクションで、J2EE コンポーネントのすべてのタイプについて簡潔に説明します。J2EE コンポーネントには、アプレットアプリケーション・クライアントWeb コンポーネントEnterprise JavaBeans があります。J2EE コンポーネントは、J2EE コンテナーで動作します。

アプレットTo top of page

アプレットは、Web ページと共に送信でき、Web ブラウザーで実行できる小規模なプログラムです。アプレット・プログラミング・モデルをサポートするほかの環境でも実行できます

アプレットは、主にユーザー・インターフェースの実装に使用され、HTML ページの機能を大幅に拡張できます。

アプリケーション・クライアントTo top of page

アプリケーション・クライアントは Java アプリケーションです。J2EE の中間層と EIS 層の機能にアクセスします。通常のアプリケーション・クライアントは、ユーザー・インターフェースを提供するデスクトップ・アプリケーションです。『概念: 分散パターン』で説明するように、「thick client」の実装に使用されることもあります。

Web コンポーネントTo top of page

Java サーブレットTo top of page

Java サーブレット・テクノロジーによって、Web サーバーは、Web クライアントからの要求を処理できるようになり、動的な内容を含んだ応答を提供できるようになりました。Java サーブレットは、この動的な内容を生成するために、ほかの Web コンポーネントや EJB コンポーネントと相互作用することができます。HTML や XML などテキスト・ベースの任意の文書形式で内容を生成できます。JAX-RPC API と連携して、Java サーブレットを Web サービス・エンドポイントとして使用することもできます。

メモ: サーブレットを Web サービス・エンドポイントとして使用する方法は J2EE 1.4 (JAX-RPC 1.1) の新機能であるため、それ以前のバージョンではサポートしていません。

J2EE サーブレットについて詳しくは、http://java.sun.com/ を参照してください。「J2EE」、「Blueprints」のリンクに従って参照してください。

JavaServer Pages To top of page

JavaServer Pages (JSP) テクノロジーは、Java サーブレットを基盤としていますが、コード・ベースではなく、テキスト・ベースです。JSP ページは、サーブレットのように要求を処理し、応答を生成しますが、そのロジックは主にプレゼンテーション駆動型です。JSP ページは、Java Beans や EJB などほかのソースから取得したデータのプレゼンテーション形式を定義する静的 HTML を主に含みます。Web コンポーネント開発者は、カスタム・タグ・ライブラリーを作成して JSP を拡張し、新しい機能を追加できます。

JSP について詳しくは、http://java.sun.com/ を参照してください。「J2EE」、「Blueprints」のリンクに従って参照してください。

HTML ページTo top of page

HTML ページは、ユーザー・インターフェースのサポートに使用できます。HTML ページは、静的な Web ページとして定義したり、サーブレットや JSP ページによって生成したりできます。J2EE の仕様では、J2EE Web クライアントは HTML ページの表示をサポートする必要があります。

JavaBeans To top of page

JavaBeans の API は、簡単で再利用可能なコンポーネントの作成のためのアーキテクチャーを定義します。これらのコンポーネントは、アプリケーション・ビルダー・ツールを使用して編集およびアセンブルできます。 正規の Java コードが JavaBeans の実装に使用されるので、これらのコンポーネントを使用するほかのプログラマーやツールも引き続きこの実装を読み取ることができます。

JavaBeans は、J2EE テクノロジーではありませんが、J2EE テクノロジーによって使用されます。例えば、EJB は、値オブジェクトとして JavaBeans を使用できます。JavaBeans と Enterprise JavaBeans の違いについては、『JavaBeans と EJB の比較』を参照してください。

JavaBeans について詳しくは、『概念: JavaBeans』を参照してください。

Enterprise JavaBeans To top of page

Enterprise JavaBeans 仕様は、コンポーネント・ベースのトランザクション分散ビジネス・アプリケーションの開発と導入のアーキテクチャーを規定します。

EJB 仕様で定義したコンポーネントを Enterprise JavaBeans (EJB) と呼びます。EJB は、アプリケーションのビジネス・ルールを実装するサーバー・サイド Java コンポーネントです。

EJB は、見出し『EJB コンテナー』で説明した EJB コンテナーと呼ばれる環境に導入され、実行されます。EJB コンテナーは、トランザクション管理データベース接続セキュリティーなどのサービスを提供します。そのような複雑性を隠蔽することによって、コンポーネント開発者は EJB アーキテクチャーを使用してビジネス論理に集中できます。

Enterprise JavaBeans (EJB) は、Java インターフェース、EJB 実装クラス、XML の配置記述子の組み合わせです。EJB インターフェースと実装クラスは、特定のインターフェースの実装や特定のコールバック・メソッドの提供など EJB の仕様で定義した規則に一致する必要があります。

EJB インターフェースには、EJB インスタンスの検索と作成のメソッドを提供するホーム・インターフェースと、特定の EJB インスタンスにビジネス・メソッドを提供するコンポーネント・インターフェースがあります。これらは、ネットワーク全体から呼び出すことができるリモート・インターフェースであるか、呼び出し側が同じプロセス (正確には、同じ Java Virtual Machine) にある必要があるローカル・インターフェースです。EJB インターフェースは、EJB 実装クラスにメソッドを委譲する EJB コンテナー・クラスによって実装されます。コンテナー管理によるエンティティー EJB のファインダー・メソッドは、例外的にコンテナー・クラスで処理されます。

EJB には、セッション Beanエンティティー Beanメッセージ駆動型 Bean の 3 種類があります。

EJB について詳しくは、http://java.sun.com/ を参照してください。「J2EE」、「Blueprints」のリンクに従って参照してください。

セッション BeanTo top of page

セッション Bean コンポーネントは、クライアント固有のビジネス論理を実装するサービスを提供します。単一のクライアントが、ローカルまたはリモート・インターフェースを介して各セッション Bean インスタンスにアクセスできます。セッション Bean は、データをデータベースに保管できますが、通常は、ビジネス・オブジェクトを表すエンティティー Bean に対してデータの保管を要求します。セッション Bean インスタンスは、一時的な会話型の状態を保持できます。

セッション Bean には、データベース内の顧客すべてのコレクションを返すメソッド getAllCustomers() があることがあります。この Bean は、Customer エンティティー Bean からその情報を取得し、結果をクライアントにデリバーします。

ステートレス・セッション Bean を、JSR および EJB 仕様で定義した Web サービス・エンドポイントとして使用できます。

メモ: ステートレス・セッション Bean を Web サービスとして使用する方法は J2EE 1.4 (JSR 109 と EJB 2.1) の新機能であるため、それ以前のバージョンではサポートしていません。

セッション Bean について詳しくは、http://java.sun.com/ の「Enterprise JavaBeans Specification」のバージョン 2.1 を参照してください。「Products & Technologies」、「J2EE」、「Enterprise JavaBeans」のリンクに従って参照してください。

エンティティー BeanTo top of page

エンティティー Bean コンポーネントは、ビジネス・オブジェクト固有の論理を実装するサービスを提供します。複数のクライアントが、ローカルまたはリモート・インターフェースを介して、エンティティー Bean インスタンスに同時にアクセスできます。エンティティー Bean は、ビジネス・オブジェクト・データをデータベースに保管するので、コンテナーまたはクライアントが破壊されても永続データは失われません。

エンティティー Bean は、リレーショナル・データベースの顧客テーブルの行として格納されている顧客を表すことができます。EJB 開発者は、永続化の方法を選択します。この場合はリレーショナル・データベースです。

エンティティー Bean の永続性は 2 種類あります。Bean 管理による永続性 (BMP) とコンテナー管理による永続性 (CMP) です。BMP エンティティー Bean は、データ・アクセス・コードを実装する必要があります。これに対して、CMP エンティティー Bean には、コンテナーによって実装されたデータ・アクセスの機能があります。CMP コンテナー実装は、通常、リレーショナル・データベース永続性に対して提供されますが、ほかの種類の永続性 (オブジェクト・データベース、ファイル・ベースの永続性など) も提供できます。

エンティティー Bean について詳しくは、http://java.sun.com/ の「Enterprise JavaBeans Specification」のバージョン 2.1 を参照してください。「Products & Technologies」、「J2EE」、「Enterprise JavaBeans」のリンクに従って参照してください。

メッセージ駆動型 BeanTo top of page

メッセージ駆動型 Bean コンポーネントは、メッセージ処理固有のビジネス論理を実装するサービスを提供します。コンテナーのみがこのサービスを呼び出すことができます。クライアントは、リモートまたはローカル・インターフェースを介してこのサービスを直接呼び出すことができません。代わりに、Bean がサービスを提供する送信先またはエンドポイントにメッセージが到達した場合、コンテナーは、送信先に MessageListener として割り当てられたメッセージ駆動型 Bean のインスタンスを呼び出します。メッセージ駆動型 Bean インスタンスは、会話型の状態を保持しませんが、メソッド呼び出しの間でインスタンス変数をリソース参照 (データベース接続など) と共に保持できます。

メモ: メッセージ駆動型 Bean は、EJB 2.0 より前ではサポートしていません。JMS 以外のメッセージング・タイプのサポートは、EJB 2.1 仕様の新機能であるため、それ以前のバージョンではサポートしていません。

メッセージ駆動型 Bean について詳しくは、http://java.sun.com/ の「Enterprise JavaBeans Specification」のバージョン 2.0 を参照してください。「Products & Technologies」、「J2EE」、「Enterprise JavaBeans」のリンクに従って参照してください。

JavaBeans と EJB の比較To top of page

EJB と JavaBeans は名前が似ていますが、通常の JavaBeans と比較すると、EJB は非常に複雑です。両方とも再利用可能なコンポーネントのアーキテクチャーを定義しますが、EJB では、複数ユーザーの分散サービスの作成に必要な追加サポートも提供します。どちらのコンポーネント・タイプもアプリケーション・ビルダー・ツールを使用してアセンブルできますが、EJB を実行するには EJB コンテナーに導入する必要があります。

J2EE コンポーネントのサービス (API)

J2EE コンテナーは、すべての J2SE 標準 API をサポートすると同時に、コンテナー・タイプに応じた J2EE API のサブセットもサポートします。コンテナー内のコンポーネントは、この利用可能なサブセットにアクセスできます。次に示すは、各 API の概要とその API が利用可能な J2EE コンテナーのリストです。

名前
説明
API が利用可能な
J2EE コンテナー

EJB 2.1

EJB 仕様は、EJB 用のコンポーネント・モデルを定義します。ビジネス層コンポーネントは、リモート・コミュニケーション、トランザクション管理、セキュリティー、永続性などのサービスを自動的にサポートします。

EJB について詳しくは、http://java.sun.com/ のサイトで「Products & Technologies」、「J2EE」、「Enterprise JavaBeans」のリンクに従って参照してください。

  • EJB
  • アプリケーション・クライアント*
  • Web*
  • * クライアント API のみ

    JAAS

    Java Authentication and Authorization Service (JAAS) は、あるアクションを実行する権限をユーザーが持っていることを確認するユーザーの認証と承認のサービスを提供します。

    JAAS について詳しくは、http://java.sun.com/ サイトの「Products & Technologies」、「J2SE」、「Core Java」、「Java Authentication and Authorization Service (JAAS)」のリンクに従って参照してください。

  • アプリケーション・クライアント
  • Web
  • EJB
  • JAF 1.0

    JavaBeans Activation Framework (JAF) は、データの特定と、そのデータを操作するための JavaBeans のインスタンス化のサービスを提供します。

    JAF について詳しくは、http://java.sun.com/ のサイトの「Products & Technologies」、「J2SE」、「Desktop Java」、「JavaBeans」、「JavaBeans Activation Framework」のリンクに従って参照してください。

  • アプリケーション・クライアント
  • Web
  • EJB
  • JAXP 1.2

    Java API for XML Processing (JAXP) は、DOM SAX や XSLT を使用する準拠パーサーとトランスフォーマーで使用できる XML 文書処理のための抽象インターフェースを提供します。

    JAXP について詳しくは、http://java.sun.com/ のサイトで「Products & Technologies」、「J2EE」、「Java API for XML Processing (JAXP)」のリンクに従って参照してください。

  • アプリケーション・クライアント
  • Web
  • EJB
  • JAX-RPC 1.1

    JAX-RPC 仕様は、Web サービスにアクセスするためのクライアント API と、Web サービス・エンドポイントを実装するための手法を定義します。

    JAX-RPC について詳しくは、http://java.sun.com/ のサイトで「Products & Technologies」、「J2EE」、「Java API for XML-based RPC (JAX-RPC)」のリンクに従って参照してください。

  • アプリケーション・クライアント
  • Web
  • EJB
  • Web Services for J2EE 1.1

    Web Services for J2EE 仕様 (JSR-109) は、Web サービス・エンドポイントの導入のためにJ2EE アプリケーション・サーバーがサポートする必要がある機能を定義します。

    Web Services for J2EE について詳しくは、http://jcp.org/aboutJava/communityprocess/final/jsr109/index.html を参照してください。

  • アプリケーション・クライアント
  • Web
  • EJB
  • SAAJ 1.2

    SAAJ API は、SOAP メッセージを操作する機能を提供します。

    SAAJ について詳しくは、http://java.sun.com/ のサイトで「Products & Technologies」、「J2EE」、「SOAP with Attachments API for Java (SAAJ)」のリンクに従って参照してください。

  • アプリケーション・クライアント
  • Web
  • EJB
  • JAXR 1.0

    JAXR 仕様は、ebXML レジストリーや UDDI レジストリーなどの XML ベース・レジストリーへのクライアント・アクセスのための API を定義します。

    JAXR について詳しくは、http://java.sun.com/ のサイトで「Products & Technologies」、「J2EE」、「Java API for XML Registries (JAXR)」のリンクに従って参照してください。

  • アプリケーション・クライアント
  • Web
  • EJB
  • JavaMail 1.3

    JavaMail API は、Java ベースのメール・アプリケーションのビルド用に拡張可能なフレームワークを提供します。

    JavaMail について詳しくは、http://java.sun.com/ のサイトで「Products & Technologies」、「J2EE」、「JavaMail」のリンクに従って参照してください。

  • アプリケーション・クライアント
  • Web
  • EJB
  • JDBC 3.0

    Java Database Connectivity (JDBC) は、SQL データベース、スプレッドシート、フラット・ファイルなどの表形式のデータ・ソースにアクセスするための API です。

    JDBC について詳しくは、http://java.sun.com/ のサイトで「Products & Technologies」、「J2EE」、「JDBC」のリンクに従って参照してください。

  • アプリケーション・クライアント
  • Web
  • EJB
  • JMS 1.1

    Java Message Service (JMS) は、データ転送とイベント通知のための非同期メッセージング・サービスを提供します。JMS によって、JMS トピックとキューに送信されたメッセージの非同期の処理にメッセージ駆動型 EJB を使用できます。

    JMS について詳しくは、http://java.sun.com/ のサイトで「Products & Technologies」、「J2EE」、「Java Message Service」のリンクに従って参照してください。

  • アプリケーション・クライアント
  • Web
  • EJB
  • JNDI

    Java Naming and Directory Interface 仕様 (JNDI) は、分散コンポーネントとリソースの登録とルックアップのための命名サービスとディレクトリー・サービスを提供します。クライアントは、コンポーネントやリソース用に登録された JNDI 名のみを知っていればよく、ネットワーク上でのコンポーネントやリソースの実際の場所を知る必要はありません。

    例: EJB は、導入の際、配置記述子の ejb-name フィールドを使用してエンタープライズ・ディレクトリーに登録されます。J2EE クライアントは JNDI ルックアップを使用して EJB をルックアップします。クライアントが知る必要があるのは、ディレクトリーに登録された EJB の名前のみです。JNDI ルックアップは、EJB のホーム・オブジェクトへの参照を返します。

    JNDI について詳しくは、http://java.sun.com/ サイトの「Products & Technologies」、「J2SE」、「Core Java」、「Java Naming and Directory Interface (JNDI)」のリンクに従って参照してください。

  • アプリケーション・クライアント
  • Web
  • EJB
  • JTA 1.0

    Java Transaction API (JTA) は、トランザクション・マネージャー、リソース・マネージャー、アプリケーション・サーバー、アプリケーション間の分散トランザクション・サービスの管理のためのインターフェースを定義します。

    JTA について詳しくは、http://java.sun.com/ のサイトで「Products & Technologies」、「J2EE」、「Transactions」のリンクに従って参照してください。

  • Web
  • EJB
  • J2EE コネクター 1.5

    J2EE コネクター・アーキテクチャー Service Provider Interface (SPI) は、EIS リソースの J2EE コンテナーへの接続の標準を定義します。EIS 固有のリソース・アダプター (EIS ベンダーによって提供される) は、J2EE コンテナーにプラグインされ、コンテナーを拡張するので、その EIS に対してセキュアなトランザクション・サポートを提供します。それにより、コンテナーのコンポーネントは、J2EE コネクター・アーキテクチャー SPI を介して EIS にアクセスできます。

    J2EE コネクターについて詳しくは、http://java.sun.com/ のサイトで「Products & Technologies」、「J2EE」、「J2EE Connector Architecture」のリンクに従って参照してください。

  • Web
  • EJB
  • JSP 2.0

    JavaServer Pages テクノロジーは、Web 開発者に動的な Web ページの作成と管理の機能を提供します。JSP ページは、テキスト・ベースであり、XML に似たタグを使用して、ビジネス論理を実行し、カスタム・コンテンツを生成します。JSP テクノロジーによって、ビジネス論理をほかのコンポーネントに委譲できるので、JSP ページに埋め込む必要があるのはプレゼンテーション論理のみになります。

    JSP について詳しくは、http://java.sun.com/ のサイトで「Products & Technologies」、「J2EE」、「JavaServer Pages」のリンクに従って参照してください。

    Web

    サーブレット 2.4

    Java サーブレットは、Web サーバーの機能を拡張して、Web ベース・アプリケーションのビルドを支援します。サーブレットは、Web サーバーがユーザーの要求に対して既存のビジネス・システムから動的に生成されたコンテンツを取得して返すインタラクティブな Web アプリケーションで多く使用されます。

    Java サーブレットについて詳しくは、http://java.sun.com/ のサイトで「Products & Technologies」、「J2EE」、「Java Servlet」のリンクに従って参照してください。

    Web

    RMI-IIOP

    Remote Method Invocation technology run over Internet Inter-Orb Protocol (RMI-IIOP) によって、Java コンポーネントは、C++ や Smalltalk などほかの言語で書かれたレガシー CORBA コンポーネントと通信が可能です。

    RMI-IIOP について詳しくは、http://java.sun.com/ サイトの「Products and APIs」、「RMI-IIOP」のリンクに従って参照してください。

  • アプリケーション・クライアント
  • Web
  • EJB
  • J2EE Management 1.0

    J2EE Management API は、J2EE アプリケーション・サーバーを照会してその現在の状況や導入されたアプリケーションなどを判別するための管理ツールの API を提供します。

    RMI-IIOP について詳しくは、http://java.sun.com/ のサイトで「Products & Technologies」、「J2EE」、「J2EE Management Specification」のリンクに従って参照してください。

  • アプリケーション・クライアント
  • Web
  • EJB
  • JMX 1.2

    JMX API は、J2EE 製品の管理に必要なサポートを J2EE Management API が提供するために使用されます。

    JMX について詳しくは、http://java.sun.com/ サイトの「Products & Technologies」、「J2SE」、「Core Java」、「Java Management Extensions (JMX)」のリンクに従って参照してください。

  • アプリケーション・クライアント
  • Web
  • EJB
  • J2EE Deployment 1.1

    J2EE Deployment API は、導入ツールの実行時環境と J2EE アプリケーション・サーバーが提供するプラグイン・コンポーネントとの間のインターフェースを定義します。

    J2EE Deployment について詳しくは、http://java.sun.com/ のサイトで「Products & Technologies」、「J2EE」、「J2EE Deployment Specification」のリンクに従って参照してください。

     

    JACC 1.0

    JACC 仕様は、J2EE アプリケーション・サーバーと承認ポリシー・プロバイダーとの間のコントラクトを定義します。

    JACC について詳しくは、http://java.sun.com/ のサイトで「Products & Technologies」、「J2EE」、「Java Authorization Contract for Containers」のリンクに従って参照してください。

  • アプリケーション・クライアント
  • Web
  • EJB

  • アセンブリーと導入To top of page

    J2EE アプリケーションは、アプリケーション配置記述子 (application.xml) と、アプリケーションを構成する 1 つ以上の J2EE モジュールから構成されます。モジュールは再利用可能で、移植性のあるコンポーネントです。J2EE アプリケーションは、.ear アーカイブにパッケージされています。

    配置記述子To top of page

    配置記述子は J2EE アプリケーションと J2EE モジュールで使用される XML ファイルです。配置記述子は、J2EE サーバーが導入の際に参照する構成情報を提供します。この構成情報によって、サーバーは、ソース・コードやクラスを変更しなくても、J2EE アプリケーションやモジュールを宣言的にカスタマイズできます。

    各 J2EE アプリケーションやモジュールに対して、汎用配置記述子タイプがあります。EJB モジュールの ejb-jar.xml などの汎用配置記述子は、導入先のサーバーに関係なく EJB に適用される情報を定義します。サーバー固有の配置記述子は、特定のサーバーのみに意味を持つ情報を指定します。サーバー固有の配置記述子には、それらが対象とするサーバーに対応した名前があります。

    J2EE モジュールTo top of page

    J2EE モジュールは、モジュール用の配置記述子と、モジュールを構成する次に示すような数多くの要素で構成されます。

    • Web サーバーに導入された Java ではない要素 (JSP ページ、イメージ・ファイル、静的 HTML ページ)、つまりバーチャル・ディレクトリー要素
    • Web サーバーに導入された Java 要素 (サーブレット、JavaBeans、Java クラス)
    • EJB サーバーに導入された要素 (EJB、サポート Java クラス)

    J2EE モジュールには次の 3 種類があります。

    J2EE アプリケーション・クライアントTo top of page

    J2EE アプリケーション・クライアント・モジュールは、.jar アーカイブにパッケージされ、次を含みます。

    • application-client.xml 配置記述子
    • アプリケーション・クライアント実装 .class ファイル
    Web コンポーネントTo top of page

    Web コンポーネント・モジュールは、.war アーカイブにパッケージされ、次を含みます。

    • web.xml 配置記述子とサーバー固有の配置記述子
    • JSP ページ
    • HTML ページ
    • イメージ (.gif や .jpg など)
    • サーブレット・クラス・ファイル

    モジュールが Web サービスである場合、.war アーカイブは次を含みます。

    • webservices.xml 配置記述子
    • サーブレット・クラス・ファイル
    • WSDL ファイル
    Enterprise JavaBeansTo top of page

    単一の Enterprise JavaBeans JAR アーカイブが数多くの EJB を含んでいても、それらの導入情報は、1 セットの配置記述子 (ejb-jar.xml とサーバー固有の配置記述子) に格納されます。

    標準 Enterprise JavaBeans モジュールは、次を含みます。

    • ejb-jar.xml とサーバー固有の配置記述子
    • EJB 実装クラス・ファイル

    Web サービス Enterprise JavaBeans モジュールは、次を含みます。

    • webservices.xml 配置記述子
    • EJB 実装クラス・ファイル

    J2EE パッケージと導入について詳しくは、http://java.sun.com/ を参照してください。「Docs & Training」、「J2EE Platform, Enterprise Edition」、「Java Blueprints Program」のリンクに従ってください。

    J2EE アプリケーション開発To top of page

    J2EE アプリケーション開発プロセスは、いくつかのロールとステージを定義します。次のセクションでは、J2EE 仕様で提供される開発ロールと、そのロールが参加する開発ステージを定義します。

    J2EE アプリケーション開発のロールTo top of page

    次の表は、アプリケーション開発ロールの概要です。

    ロール名 説明

    J2EE 製品プロバイダー

    J2EE 製品プロバイダーは、J2EE プラットフォーム実装 (J2EE 製品ともいいます) のサプライヤーです。J2EE 製品プロバイダーには、BEA、IBM、Sun などがあります。これらの企業は、一般的に、J2EE プラットフォーム実装の提供において経験の蓄積による強みを発揮します。例えば、BEA の実装は、BEA の評価の高い Tuxedo トランザクション処理モニター上にビルドされます。J2EE 製品プロバイダーは、アプリケーションの導入と管理のサポートに必要なツールも供給します。

    アプリケーション・コンポーネント・プロバイダー

    アプリケーション・コンポーネント・プロバイダーに実際に含まれるロールには、EJB 開発者や HTML 文書設計者などがあります。これらのロールは、提供されたツールを使用した J2EE アプリケーション・コンポーネントの作成を担当します。

    アプリケーション・アセンブラー

    アプリケーション・アセンブラーは、提供されたツールを使用して J2EE アプリケーション・コンポーネントから J2EE アプリケーションを作成します。J2EE アプリケーションは、Enterprise Archive (EAR) ファイルとしてデリバーされます。アプリケーション・アセンブラーは、J2EE アプリケーションの外部依存関係も記述します。デプロイヤーは、実際に J2EE アプリケーションを導入する際に、これらの依存関係を解決します。

    デプロイヤー

    デプロイヤーは、J2EE アプリケーションとアプリケーションを構成するアプリケーション・コンポーネントの操作環境への導入を担当します。導入の第 1 段階は、さまざまなアプリケーション・コンポーネントを、関連する J2EE コンテナー内にインストールすることです。導入の第 2 段階は、宣言された外部依存関係を解決できるように構成することです。例えば、定義済みのセキュリティー・ロールは、操作環境のユーザー・グループとアカウントにマッピングされます。導入の第 3 段階は、要求を受信する準備ができるように新しいアプリケーションを実行することです。

    システム管理者

    システム管理者は、導入された J2EE アプリケーションなどの実行時のインフラストラクチャーを担当します。このロールは、J2EE 製品プロバイダーによってこのタスクを完了するために提供された適切なツールを使用します。

    ツール・プロバイダー

    ツール・プロバイダーは、アプリケーション・コンポーネントの開発とパッケージをサポートするツールを提供します。通常の場合、これらのツールは、生成されたアプリケーション・コンポーネントのさまざまなタイプに対応し、IBM VisualAge for Java や Borland JBuilder などの IDE を含みます。

    システム・コンポーネント・プロバイダー

    システム・コンポーネント・プロバイダーは、リソース・アダプターや承認ポリシー・プロバイダーなどのさまざまなシステム・レベル・コンポーネントを提供します。


    これらのロールは排他的ではなく、特に小規模な開発チームやプロトタイプの場合、1 人が複数のロールを受け持つ可能性もあります。

    J2EE アプリケーション開発のステージTo top of page

    このセクションでは、J2EE 仕様で規定される J2EE アプリケーション開発の各ステージを説明します。開発ステージは次のとおりです。

    J2EE アプリケーションは、少なくとも 1 つの J2EE モジュールを含む必要があるので、1 つ以上のコンポーネント開発ステージが必要です。すべての J2EE アプリケーションでアセンブリーと導入が必要なので、最後の 2 ステージは常に必要です。

    次の表は、J2EE アプリケーションの開発ステージの概要です。

    J2EE 開発ステージ タスク 実行者 (J2EE ロール) 結果 (納品可能物)

    J2EE アプリケーション・クライアントの作成

    • クライアント・コードの作成とクラスのコンパイル
    • application-client.xml 配置記述子の作成
    • クラスと XML ファイルを含む JAR ファイル・アーカイブの作成

    アプリケーション・コンポーネント・プロバイダー (ソフトウェア開発者)

    J2EE アプリケーション・クライアントを含む JAR ファイル

    Web コンポーネントの作成

    • サーブレット・コードの作成とクラスのコンパイル
    • JSP と HTML ページの作成
    • web.xml 配置記述子の作成
    • クラス、.jsp、.html、XML ファイルを含む Web Application aRchive (WAR) ファイル・アーカイブの作成

    アプリケーション・コンポーネント・プロバイダー (ソフトウェア開発者: サーブレット、Web 設計者: JSP ページ、HTML ページ)

    Web コンポーネントを含む WAR ファイル

    Enterprise JavaBeans の作成

    • EJB コードの作成とクラスのコンパイル
    • ejb-jar.xml と サーバー固有の配置記述子の作成
    • クラスと XML ファイルを含む JAR ファイル・アーカイブの作成

    アプリケーション・コンポーネント・プロバイダー (ソフトウェア開発者)

    Enterprise JavaBeans を含む JAR ファイル

    J2EE アプリケーション・アセンブリー

    • application.xml 配置記述子の作成
    • EJB (JAR)、Web コンポーネント (WAR)、XML ファイルを含む EAR ファイル・アーカイブの作成

    アプリケーション・アセンブラー

    J2EE アプリケーションを含む EAR ファイル

    J2EE アプリケーションの導入

    • J2EE アプリケーション (EAR) を J2EE サーバー環境に追加
    • application.xml 配置記述子をローカルの環境構成で編集
    • J2EE アプリケーション を J2EE サーバーに導入

    デプロイヤー

    インストールと構成済みの J2EE アプリケーション


    開発プロセスの各ステージでは、次のステージで使用される納品可能物を作成します。コンポーネント開発のステージで作成されたコンポーネントは、J2EE アプリケーション・アセンブリーのステージで、J2EE アプリケーション EAR アーカイブの作成に使用されます。J2EE アプリケーション導入のステージでは、EAR アーカイブが J2EE サーバーに導入されます。

    各ステージの納品可能物は移植が可能なため、環境が J2EE プラットフォームの要求を満たしていれば、同じ人や同じ環境で実行する必要はありません。

    J2EE パッケージと導入について詳しくは、http://java.sun.com/ を参照してください。「J2EE」、「Blueprints」のリンクに従って参照してください。

    詳細情報To top of page

    J2EE について詳しくは、Sun J2EE Blueprints を参照してください。http://java.sun.com/ でアクセスできます。「J2EE」、「Blueprints」、「Guidelines: Designing Enterprise Applications with the J2EE Platform, Second Edition」のリンクに従って参照してください。

    このドキュメントのコピーは、Rational Unified Process にも含まれています。

    次の表は、個別のトピックに対応する Sun J2EE Blueprints の章を示します。

    J2EE の概念 J2EE Blueprints の章

    J2EE プラットフォーム・テクノロジー

    第 2 章

    Enterprise JavaBeans

    第 5 章

    トランザクション

    第 8 章

    セキュリティー

    第 9 章

    サーブレット

    第 4 章

    JavaServer Pages

    第 4 章

    導入とパッケージング

    第 7 章



    Rational Unified Process   2003.06.15