|
|
| |
WebLogic Server コンテナ用の EJB のパッケージ化
以下の節では、WebLogic Server コンテナにデプロイするために EJB をパッケージ化する方法について説明します。ソース ファイル、デプロイメント記述子、およびデプロイメント モードを始めとしてデプロイメント パッケージの内容も説明します。
WebLogic Server にデプロイするために EJB を EJB コンテナにパッケージ化するには、次の手順を実行します。
EJB コンポーネント ソース ファイルの見直し
エンティティ Bean とセッション Bean を実装するには、以下のコンポーネントを使用します。
WebLogic Server の EJB デプロイメント ファイル
EJB のデプロイメント記述子要素を指定するには、以下の WebLogic Server デプロイメントファイルを使用します。
Bean をコンパイルすると、デプロイメント ファイルは EJB デプロイメントの一部となります。XML デプロイメント記述子ファイルには、EJB に対するデプロイメント記述子の最低限の設定を含める必要があります。いったんファイルを作成すると、EJB デプロイメント記述子の指定と編集の手順に従って後で編集できます。デプロイメント記述子ファイルは、使用する各ファイルの文書型定義(DTD)のバージョンに準拠する必要があります。ファイルの文書型定義(DTD)には、EJB XML デプロイメント記述子ファイルのすべての要素および下位要素(属性)の名前を記述します。各ファイルの説明については、以下の節を参照してください。
ejb-jar.xml
ejb-jar.xml ファイルには、Sun Microsystems 固有の EJB DTD が格納されます。このファイルのデプロイメント記述子は、エンタープライズ Bean の構造を記述し、内部依存関係とアプリケーション アセンブリ情報を宣言します。アプリケーション アセンブリ情報とは、ejb-jar ファイルのエンタープライズ Bean をアプリケーション デプロイメント ユニットとしてアセンブルする方法を記述するものです。このファイルの要素の説明については、JavaSoft 仕様を参照してください。
weblogic-ejb-jar.xml
weblogic-ejb-jar.xml ファイルには、EJB のキャッシング、クラスタ化、およびパフォーマンスの各動作を定義する WebLogic Server 固有の EJB DTD が格納されます。また、使用可能な WebLogic Server リソースを EJB にマップする記述子も格納されます。WebLogic Server リソースには、セキュリティ ロール名、データ ソース(JDBC プールや JMS 接続ファクトリなど)、およびデプロイ済みの他の EJB があります。このファイルの要素の説明については、weblogic-ejb-jar.xml 文書型定義.を参照してください。
weblogic-cmp-rdbms.xml
weblogic-cmp-rdbms.xml ファイルには、コンテナ管理による永続性サービスを定義する WebLogic Server 固有の EJB DTD が格納されます。このファイルを使用して、コンテナがエンティティ Bean のインスタンス フィールドとデータベースのデータとの同期を処理する方法を指定します。このファイルの要素の説明については、weblogic-cmp-rdbms-jar.xml 文書型定義.を参照してください。
デプロイメント ファイル間の関係
weblogic-ejb-jar.xml 内の記述子は、ejb-jar.xml 内の EJB 名、動作中の WebLogic Server のリソース名、および weblogic-cmp-rdbms-jar.xml(コンテナ管理による永続性を使用するエンティティ EJB の場合)内に定義されている永続性タイプ データにリンクされています。次の図は、デプロイメント ファイルと WebLogic Server 間の関係を示しています。
図6-1 デプロイメント ファイルのコンポーネント間の関係
EJB デプロイメント記述子の指定と編集
以下のいずれかの方法で、EJB デプロイメント記述子を指定または編集します。
デプロイメント ファイルの作成
各ファイルの文書型定義(DTD)のバージョンに準拠した基本の XML デプロイメント ファイルを EJB 用に作成します。既存の EJB デプロイメント ファイルをテンプレートとして使用することも、WebLogic Server 配布キットの EJB サンプルからコピーすることもできます。
wlserver\samples\examples\ejb20
EJB デプロイメント記述子の手動編集
XML デプロイメント記述子要素を手動で編集するには、次の手順に従います。
<max-beans-in-cache></max-beans-in-cache>
EJB デプロイメント記述子エディタの使用
WebLogic Server Administration Console で EJB デプロイメント記述子を編集するには、次の手順に従います。
注意: EJB デプロイメント記述子の詳細については、Administration Console のオンライン ヘルプまたはweblogic-ejb-jar.xml 文書型定義,と weblogic-cmp-rdbms-jar.xml 文書型定義.を参照してください。
WebLogic Server デプロイメント モードの設定
次のいずれかの方法で、エンタープライズ アーカイブ ファイル(EAR)または EJB を WebLogic Server にデプロイします。
自動モードによるデプロイメント
自動モード デプロイメント オプションはデフォルトです。この機能は、開始時とサーバの実行中にアクティブなサーバのアプリケーション ディレクトリを自動的にポーリングして、EJB デプロイメントが変更されていないどうかを調べます。デプロイメントが変更されていた場合、サーバをポーリングしたときに自動的にデプロイされます。開発モードでは、デプロイする EJB または EAR の applications ディレクトリを使用します。デプロイ後、これらの EJB/EAR は config.xml ファイルに合わせて自動的に保持されます。
また、WebLogic Server は、EJB デプロイメントが変更されていないか調べるために、10 秒ごとに applications の内容をチェックします。デプロイメントが変更されていた場合、動的デプロイメント機能を使用して自動的に再デプロイされます。
EJB サンプルの自動デプロイ
WebLogic Server に付属の EJB サンプルは、wlserver\config\applications ディレクトリに自動的にデプロイされます。
プロダクション モードによるデプロイメント
プロダクション モード デプロイメント オプションは、自動デプロイメントを無効にします。プロダクション モード デプロイメントを有効にすると、config.xml ファイルで指定されたアプリケーションがサーバの起動時にデプロイされます。
このモードを有効にするには、コマンド ラインで次のコマンドを true に設定します。
-d production mode enabled true
プロダクション モードの詳細については、『管理者ガイド』の startstop.html にある「コマンドラインからの WebLogic 管理サーバの起動」を参照してください。
デプロイメント プロセスは、EJB プロバイダによって作成されたコンパイル済み EJB インタフェースと実装クラスを格納する JAR ファイルまたはデプロイメント ディレクトリで開始されます。JAR ファイルとデプロイメント ディレクトリは、どちらがコンパイル済みクラスを格納している場合でも、Java パッケージ構造と一致するサブディレクトリに入っている必要があります。
また、EJB プロバイダが、付属の EJB を記述する EJB 準拠の ejb-jar.xml ファイルを提供する必要があります。ejb-jar.xml ファイルとその他に必要な XML デプロイメント ファイルの場所は、JAR またはデプロイメント ディレクトリの META-INF サブディレクトリの最上位でなければなりません。次の図は、EJB とデプロイメント記述子ファイルをデプロイメント ディレクトリまたは JAR ファイルにパッケージ化する作業の第 1 段階を示しています。
図6-2 デプロイメント ディレクトリへの EJB クラスとデプロイメント記述子のパッケージ化
基本の JAR またはデプロイメント ディレクトリは、そのまま WebLogic Server にデプロイすることができません。まず、weblogic-ejb-jar.xml ファイルの WebLogic 固有のデプロイメント記述子要素を作成してコンフィグレーションし、そのファイルをデプロイメント ディレクトリまたは ejb.jar ファイルに追加します。デプロイメント記述子ファイルの作成手順については、WebLogic Server の EJB デプロイメント ファイルを参照してください。
コンテナ管理の永続性を使用するエンティティ EJB をデプロイする場合は、Bean の永続性タイプに対応する WebLogic 固有のデプロイメント記述子要素も追加する必要があります。通常、WebLogic Server のコンテナ管理による永続性(CMP)サービスの場合、ファイルの名前は weblogic-cmp-rdbms-jar.xml です。CMP を使用する Bean ごとに別々のファイルが必要です。サードパーティの永続性ベンダを使用する場合は、weblogic-cmp-rdbms-jar.xml とは内容だけでなくファイル タイプも異なることがあるので、詳細については、永続性ベンダのマニュアルを参照してください。
EJB に必要なデプロイメント記述子ファイルがない場合は、手動で作成しなければなりません。既存のファイルをコピーした上で、必要に応じて EJB の設定を編集する方法が最も簡単です。ファイルを作成するには、EJB デプロイメント記述子の指定と編集の手順に従います。
ejb.jar ファイル
ejb.jar ファイルを作成するには、Java Jar ユーティリティ(javac)を使用します。このユーティリティは、EJB クラスとデプロイメント記述子を、ディレクトリ構造を保持する 1 つの Java アーカイブ(JAR)ファイルにまとめます。ejb-jar ファイルが、WebLogic Server にデプロイするユニットとなります。
EJB クラスのコンパイルと EJB コンテナ クラスの生成
デプロイメント ユニットの作成手順の一部として、EJB クラスをコンパイルし、デプロイメント記述子をデプロイメント ユニットに追加し、デプロイメント ユニットにアクセスするためのコンテナ クラスを作成する必要があります。
ejbc コンパイラは、WebLogic 固有の XML デプロイメント記述子ファイルで指定した XML デプロイメント記述子ファイルに従ってコンテナ クラスを生成します。たとえば EJB をクラスタで使用するよう指定した場合、ejbc は、そのデプロイメント用の特別なクラスタ対応クラスを作成します。
また、コマンド ラインから ejbc を直接使用して、必要なオプションと引数を指定することもできます。詳細については、ejbcを参照してください。
次の図は、JAR ファイルの作成時にデプロイメント ユニットに追加されるコンテナ クラスを示しています。
図6-3 EJB コンテナ クラスの生成
デプロイメント ユニットの作成後、JAR、EAR、または WAR アーカイブのいずれかとしてファイル拡張子を指定できます。
WebLogic Server への EJB クラスのロード
Weblogic Server のクラスローダは階層的です。WebLogic Server の起動時に、Java システム クラスローダはアクティブになり、その後に WebLogic Server が作成するすべてのクラスローダの親になります。WebLogic Server では、アプリケーションをデプロイするときに、EJB 用と Web アプリケーション用の 2 つの新しいクラスローダを作成します。EJB クラスローダは Java システム クラスローダの子、Web アプリケーション クラスローダは EJB クラスローダの子です。
クラスローダの詳細については、『WebLogic Server アプリケーションの開発』の「クラスローダの概要」と「アプリケーションのクラスローダ」を参照してください。
ejb-client.jar の指定
WebLogic Server では、ejb-client.jar ファイルを使用できます。ejb-client.jar ファイルを作成するには、この機能を Bean の ejb-jar.xml デプロイメント記述子ファイルを指定してから、weblogic.ejbc を使用して ejb-client.jar ファイルを生成します。ejb-client.jar には、ejb-jar ファイルの EJB を呼び出すためにクライアント プログラムに必要なクラス ファイルが格納されます。これらのファイルは、クライアントをコンパイルするために必要なクラスです。この機能を指定した場合、WebLogic Server は ejb-client.jar を自動的に作成します。
ejb-client.jar を指定するには、次の手順に従います。
<ejb-client-jar>ShoppingCartClient.jar</ejb-client-jar>
$ java weblogic.ejbc <ShoppingCart.jar>
<ShoppingCart.jar>
ejb-client.jar には、エンティティ Bean のホーム インタフェース、リモート インタフェース、および主キー クラスが必ず格納されます。また、これらのインタフェースが参照する ejb-jar ファイルのすべてのクラスのコピーも格納されます。たとえば、ShoppingCart リモート インタフェースが Item クラスを返すメソッドを持っているとします。このリモート インタフェースはこのクラスを参照し、ejb-jar ファイルに入っているので、EJB client.jar に含まれます。
外部クライアントは、ejb-client.jar をそれぞれのクラスパスに含めます。Web アプリケーションは、ejb-client.jar を \lib ディレクトリに含めます。
マニフェスト クラスパス
JAR ファイルが別の JAR ファイルを参照できるかどうかを指定するには、マニフェスト ファイルを使用します。スタンドアロン EJB ではマニフェスト クラスパスを使用できません。マニフェスト クラスパスは、EAR ファイル内にデプロイされているコンポーネントに対してのみサポートされています。クライアントは、マニフェスト ファイルのクラスパス エントリにある client.jar を参照します。
マニフェスト ファイルを使用して別の JAR ファイルを参照するには、次の手順に従います。
注意: このエントリは、スペース区切りの JAR ファイル リストです。
EJB のホーム/リモート インタフェースを呼び出し側コンポーネントのクラスパスに配置するには、次の手順に従います。