EJB 3.0 および EJB 3.1 デプロイメント概要

Enterprise JavaBeans (EJB) 3.0 および 3.1 デプロイメント・モデル (ジャストインタイム (JIT) デプロイメントを含む) についての学習。

すべての Java™ Enterprise Edition (Java EE) アプリケーション・サーバー製品には、何らかの形式の EJB デプロイメント・フェーズがあり、そこでアプリケーションはその特定のアプリケーション・サーバー実装で稼働するようにカスタマイズされます。 一般的に、これはアプリケーション・サーバー固有のデプロイメント・ツールによって行われます。このツールは、EJB コンテナーに対するアプリケーション・サーバーの実装に EJB インターフェースおよび実装コードをブリッジするためのコードを生成します。 一部のアプリケーション・サーバー製品のデプロイメント・ツールは、コードを生成する代わりにアプリケーション・クラスのバイトコードを変更しますが、最終的な結果は似たようなものになります。

アプリケーション・サーバーは、EJB 実装クラスをカプセル化するコードを生成し、EJB 実装クラスをアプリケーション・サーバーの EJB コンテナーに接続することによって、EJB インターフェースをその実装にブリッジします。 これにより、EJB コンテナーはエンタープライズ Bean をホストしてエンタープライズ Bean にサービスを提供することができます。 1 つ以上のエンタープライズ Bean によりリモート・インターフェースが定義されている場合は、リモート機能を提供するための追加コードが生成されます。

EJB モジュールのパッケージ化について詳しくは、EJB 3.x モジュール・パッケージ化の概要に関するトピックを参照してください。

EJB デプロイメント・ツール

以前から、Application Server 製品の EJB デプロイメントは EJB デプロイメント・ツールによって実行されてきました。このツールは WebSphere® Application Server に組み込まれ、WebSphere 製品向け開発ツールとともにパッケージ化されています。

EJB デプロイメント・ツールはエンタープライズ Bean の EJB 外部インターフェースをイントロスペクトし、ラッパー・コードを .java ファイルとして生成し、javac コンパイラーを使用してそのファイルをコンパイルし、.class ファイルを作成します。.class ファイルは、アプリケーション・コードとともに EJB モジュール内にパッケージ化されます。 EJB デプロイメント・ツールは、 アプリケーションのリモート EJB インターフェースに対して rmic ツールを実行することもでき、Remote Method Invocation over Internet Inter-ORB Protocol (RMI-IIOP) Object Request Broker (ORB) と対話する追加のスタブ およびタイ ・クラス・ ファイルを作成して、リモート・オブジェクトのサポートを提供します。

EJB 3.0 より前のモジュールでは、EJB デプロイメント・ツールを実行するのは、Application Server にアプリケーションをインストールする際か、またはコマンド行ツールか開発ツールからアプリケーションをインストールする前でした。

ジャストインタイム (JIT) デプロイメント

Application Server における EJB 3.0 サポートでは、JIT デプロイメントという新規フィーチャーが導入されています。

EJB コンテナーは、JIT デプロイメントを使用して、アプリケーションの実行中にメモリー内にラッパー、スタブ、およびタイ・クラスを動的に生成します。 さらに、Web コンテナーおよびアプリケーション・クライアント・コンテナーは、リモート EJB 呼び出しに必要なスタブ・クラスを動的に生成します。

事実上、これは Application Server 内で、EJB 3.0 または 3.1 モジュール、EJB 3.0 または 3.1 Bean を呼び出す Web モジュール、EJB 3.0 または 3.1 Bean を呼び出すクライアント・モジュールのいずれかを実行する前に、EJB デプロイメント・ツールを使用してこれらのモジュールを処理する必要がないことを意味します。

createEJBStubs ツール

ほとんどの場合、ジャストインタイム・デプロイメント・フィーチャーは、リモート EJB インターフェースの呼び出しに必要な RMI-IIOP スタブ・クラスを動的に生成できます。 これらのスタブ・クラスが動的に生成されない場合もあります。 EJB 3.x に対応した Web コンテナー、EJB コンテナー、またはクライアント・コンテナー内で実行されていない EJB 3.0 または 3.1 クライアントの場合は、createEJBStubs ツールを使用してスタブ・クラスを生成し、生成されたスタブがクライアント環境のクラスパス内で使用可能であることを確認する必要があります。一般的に、これは、生成済みのスタブをクライアントのビジネス・インターフェース・クラスがある場所にコピーすることによって行います。

以下の環境でクライアント・サイド・スタブを生成するためには、createEJBStubs ツールを使用する必要があります。
  • 「そのままの」Java Standard Edition (SE) クライアント。ここでは、Java SE Java 仮想 マシン (JVM) がクライアント環境になります。
  • Feature Pack for EJB 3.0 が適用されていないバージョン 7 より前の Application Server 環境のコンテナー。
  • WebSphere Application Server 環境以外の環境。

相互運用性

EJB 3.0 または 3.1 をサポートしていないバージョンの Application Server で稼働する WebSphere スタック製品または別の製品が、EJB 3.0 または 3.1 をサポートしているバージョンの Application Server を実行している別のサーバー上の EJB 3.x 準拠エンタープライズ Bean に対するメソッドをリモートで起動しようとすると、予期しない結果が生じる可能性があります。 これらの製品がエンタープライズ Bean の EJB 3.x リモート・ビジネス・インターフェースを介してメソッドを起動しようとすると、EJB 3.x 準拠でない環境に返される、EJB 3.0 で導入された例外が発生する可能性があります。

このシナリオは、EJB 3.x 準拠および非準拠の Application Server のインスタンスが混在するスタック製品の組み合わせを含む環境の管理者にとっても、問題になる場合があります。

以下に、EJB 3.0 で導入された例外クラスのリストを示します。
  • javax.ejb.ConcurrentAccessException
  • javax.ejb.EJBAccessException
  • javax.ejb.EJBTransactionRequiredException
  • javax.ejb.EJBTransactionRolledbackException
  • javax.ejb.NoSuchEJBException

潜在的な相互運用性の問題に対処するには、EJB モジュールのデプロイメント・ステップを参照してください。

EJB 2.x モジュール

WebSphere Application Server 製品での EJB のデプロイメントの前に、EJB 3.0 または EJB 3.1 モジュールに変換された EJB 2.x モジュールでは、すべての WebSphere Application Server 生成ファイル (スタブ・クラスおよびタイ・クラスを含む) を除去する必要があります。


トピックのタイプを示すアイコン 概念トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cejb_deployejbfp
ファイル名:cejb_deployejbfp.html