ORACLE JAPAN Server Release 7.0

 

  |  

  WebLogic Server ホーム   |     エンタープライズ JavaBeans   |   前へ   |   次へ   |   目次   |   PDF 版

WebLogic Server への EJB のデプロイ

 

以下の各節では、WebLogic Server の起動時、または 動作中の WebLogic Server に EJB をデプロイする手順について説明します。

 


役割と分担

以降の節は主に次の読者を対象としています。

WebLogic Server の 1 つまたは複数のインスタンスに EJB を作成、変更、およびデプロイできます。EJB デプロイメントを設定し、EJB 参照を実際のリソース ファクトリ、ロール、およびサーバ上で使用可能な他の EJB に割り当てるには、XML デプロイメント記述子ファイルを編集します。

 


WebLogic Server 起動時の EJB のデプロイメント

WebLogic Server の起動時に EJB を自動的にデプロイするには

  1. WebLogic Server の EJB デプロイメント ファイルの手順に従って、必要な WebLogic Server XML デプロイメント ファイルがデプロイ可能な EJB JAR ファイルまたはデプロイメント ディレクトリに入っていることを確認します。

  2. テキスト エディタまたは Administration Console の EJB デプロイメント記述子エディタを使用して、XML デプロイメント記述子要素を必要に応じて編集します。

  3. EJB クラスのコンパイルと EJB コンテナ クラスの生成の手順に従って、WebLogic Server に必要な実装クラスをコンパイルします。

    コンテナをコンパイルすると、JAR ファイルはデプロイメント記述子で指定したデプロイメント ディレクトリに配置されます。EJB を WebLogic Server の起動時に自動的にデプロイする場合は、デプロイする EJB を次のディレクトリに配置します。

    wlserver\config\mydomain\applications

    EJB JAR ファイルが別のディレクトリにある場合、このファイルを起動時にデプロイするには、このディレクトリにコピーしておく必要があります。

  4. WebLogic Server を起動します。

    起動すると WebLogic Server は、指定した EJB JAR ファイルまたはデプロイメント ディレクトリを自動的にデプロイしようとします。

  5. Administration Console を起動します。

  6. 右ペインで、[EJB] をクリックします。

    サーバの EJB デプロイメントのリストが右ペインに表示されます。

異なるアプリケーションでの EJB のデプロイメント

複数の異なったアプリケーションにリモート呼び出しによって EJB をデプロイするとき、EJB を呼び出すために参照による呼び出しは使用できません。代わりに、値による呼び出しを使用します。一般に、相互に対話するコンポーネントは参照で呼び出せるように同じアプリケーションに配置する必要があります。デフォルトでは、同じサーバから呼び出された EJB メソッドは引数を参照で渡します。パラメータはコピーされないので、これによってメソッド呼び出しのパフォーマンスが向上します。EJB がリモートで(同じサーバ以外から)呼び出される場合は、常に値で渡す必要があります。

 


動作中の WebLogic Server への EJB のデプロイ

EJB JAR ファイルまたはデプロイメント ディレクトリを wlserver\config\mydomain\applications ディレクトリに配置すると EJB を直ちにデプロイできますが、デプロイ済みの EJB を変更した場合は、その変更を有効にするために EJB を再デプロイする必要があります。

WebLogic Server を再起動できない場合に備えて、自動デプロイメントという方法が用意されています。自動デプロイメントでは、更新された EJB のみを管理サーバにデプロイし、ドメインの管理対象サーバには EJB をデプロイしません。自動デプロイメント機能を使用すると、次の作業を行えます。

コマンド ラインまたは Administartion Console から EJB をデプロイする場合でも、更新する場合でも、自動動的デプロイメント機能を利用することになります。以降の節では、自動デプロイメントの概念と手順について説明します。

EJB デプロイメント名

EJB JAR ファイルまたはデプロイメント ディレクトリをデプロイする場合は、デプロイメント ユニットの名前を指定します。この名前を使用すると、後で EJB をアンデプロイしたり更新したりする場合に、EJB デプロイメントを簡単に参照できます。

EJB をデプロイする場合は、WebLogic Server が、JAR ファイルまたはデプロイメント ディレクトリのパスおよびファイル名と一致するデプロイメント名を明示的に割り当てます。この名前を使用すると、サーバが起動した後に Bean をアンデプロイまたは更新できます。

注意: EJB デプロイメント名は、サーバが再起動されるまで、WebLogic Server 内でアクティブなままです。EJB をアンデプロイしても、関連付けられたデプロイメント名は削除されません。Bean をデプロイするために後でその名前を使う場合があるからです。

動作中の環境への新しい EJB のデプロイメント

デプロイされていない EJB JAR ファイルまたはデプロイメント ディレクトリを WebLogic Server にデプロイするには、次の手順に従います。

次のコマンドを使用します。

% java weblogic.deploy -port port_number -host host_name 
deploy password name source

各値の説明は次のとおりです。

次に例を示します。

% java weblogic.deploy -port 7001 -host localhost deploy
weblogicpwd CMP_example
c:\weblogic\myserver\unjarred\containerManaged\

固定された EJB のデプロイで必要になる特別な手順

.jar ファイルにコンパイルされていないクラスやインタフェースが含まれる場合、クラスタ内の単一のサーバ インスタンスに EJB をデプロイまたは再デプロイしようとすると (固定されたデプロイメント)、問題が発生することが確認されています。

デプロイメントの際に、コンパイルされていない EJB はクラスタ内の各サーバ インスタンスにコピーされますが、コンパイルが行われるのは、EJB がデプロイされたサーバ インスタンスだけです。その結果、EJB のデプロイ対象になっていないサーバ インスタンスには、EJB を呼び出すために必要なクラスでコンパイルの際に生成されるものが存在していません。別のサーバ インスタンス上のクライアントが固定された EJB を呼び出そうとすると失敗し、RMI レイヤで Assertion エラーが送出されます。

クラスタ内の単一のサーバ インスタンスに EJB をデプロイまたは再デプロイする場合は、デプロイする前に appc または ejbc を使って EJB をコンパイルし、生成されるクラスがすべてのサーバ インスタンスにコピーされて、クラスタ内の全ノードで利用できるようにする必要があります。

 


デプロイ済み EJB の表示

デプロイ済み EJB を表示するには、次の手順に従います。

  1. ローカルの WebLogic Server にデプロイする EJB をリストするには、次のように入力します。
    % java weblogic.deploy list password

    password は WebLogic Server のシステム アカウントのパスワードです。

  2. リモート サーバにデプロイされている EJB をリストするには、port および host オプションを次のように指定します。
    % java weblogic.deploy -port port_number -host host_name 
    list password

  1. Console の左ペインで [デプロイメント] の [EJB] を選択します。

  2. サーバにデプロイされている EJB のリストを表示します。

 


デプロイ済み EJB のアンデプロイ

EJB のアンデプロイメントは、すべてのクライアントにその EJB を使用できなくする効果的な方法です。EJB をアンデプロイすると、直ちに、指定した EJB の実装クラスがサーバ内で使用不可になったことが示されます。WebLogic Server は実装クラスを自動的に削除して、その Bean を使用していたすべてのクライアントに UndeploymentException を伝播します。

アンデプロイメントによって、指定した EJB のパブリック インタフェース クラスがすべて自動的に削除されるわけではありません。これらのクラスへの参照がすべて解放されるまで、パブリック インタフェースで参照されるホーム インタフェース、リモート インタフェース、およびすべてのサポート クラスの実装は、サーバ内に残ります。パブリック クラスは、参照が解放された時点で、通常の Java ガベージ コレクション ルーチンによって削除できます。

同様に、EJB をアンデプロイしても、ejb.jar ファイルまたはデプロイメント ディレクトリに関連付けられたデプロイメント名は削除されません。デプロイメント名は、後で EJB を更新することができるようにサーバ内に残ります。

EJB のアンデプロイメント

デプロイ済み EJB をアンデプロイするには次の手順に従います。

コマンドラインを使用する場合

次のように、割り当て済みのデプロイメント ユニット名を参照します。

% java weblogic.deploy -port 7001 -host localhost undeploy
weblogicpwd CMP_example

WebLogic Server の Administration Console を使用する場合

  1. Console の左ペインの [デプロイメント] から [EJB] を選択します。

  2. リストからアンデプロイする EJB をクリックします。

  3. 右ペインのダイアログから [コンフィグレーション] タブを選択し、アンデプロイ ボックスのチェックをはずします。

EJB をアンデプロイしても、WebLogic Server から EJB デプロイメント名は削除されません。EJB は、アンデプロイされた後に変更された場合を除いて、サーバ セッションが持続している間、アンデプロイされたままです。サーバを再起動するまで、deploy 引数でデプロイメント名を再利用することはできません。次の項で説明するように、デプロイメントの更新にそのデプロイメント名を再使用できます。

 


デプロイ済み EJB の更新

WebLogic Server にデプロイ済みの ejb.jar ファイルまたはデプロイメント ディレクトリの内容を更新すると、更新は次のいずれかの操作を行うまで、WebLogic Server に反映されません。

EJB デプロイメントを更新すると、EJB プロバイダがデプロイ済みの EJB 実装クラスを変更し、再コンパイルしてから、動作中のサーバの実装クラスを「更新」できるようになります。

weblogic.deploy の更新と対象

WebLogic Server 6.1 では、アプリケーションの対象になっているサーバ インスタンスの 1 つでそのアプリケーションを更新すると、対象になっているすべてのサーバでアプリケーションが更新されます。たとえば、アプリケーションの対象がクラスタの場合、クラスタ化されたサーバ インスタンスの 1 つでアプリケーションを更新すると、アプリケーションはクラスタの全メンバで更新されます。同様に、クラスタとスタンドアロン サーバ インスタンスがアプリケーションの対象になっている場合は、スタンドアロン サーバのインスタンスでアプリケーションを更新すると、クラスタでもアプリケーションが更新されます。また、逆の場合も同様の処理が行われます。

アプリケーションまたはコンポーネントを対象のサーバ インスタンス群のサブセットで選択的に更新する必要がある場合は、アプリケーションのユニークなインスタンスを異なる対象にデプロイします。

更新処理

ロード済みの実装を更新すると、直ちに、EJB の実装クラスがサーバ内で使用不可になったことが示され、EJB のクラスローダと関連クラスが削除されます。同時に、改版された EJB の実装クラスをロードして維持する新規の EJB クラスローダが作成されます。

EJB 全体が再ロードされます。EJB JAR の一部を再デプロイすることはできません。

クライアントが次に EJB への参照を必要とする場合、クライアントの EJB メソッドの呼び出しでは、更新済みの EJB 実装クラスが使用されます。

注意: 更新できるのは、WebLogic Server への EJB クラスのロードで説明されているように、EJB 実装クラスだけです。EJB のパブリック インタフェース、またはそのパブリック インタフェースが使用するサポート クラスを更新することはできません。EJB のパブリック クラスを変更してから EJB を更新しようとした場合、クライアントがその EJB インタフェースを次に使用するときに、WebLogic Server には、クラスの変更が互換性を持たないことを示すエラーが表示されます。

EJB の更新

EJB 実装クラスを更新するには次の手順に従います。

コマンドラインを使用する場合

update 引数を使用して、アクティブな EJB デプロイメント名を指定します。

% java weblogic.deploy -port 7001 -host localhost update
weblogicpwd CMP_example

WebLogic Server の Administration Console を使用する場合

  1. Console の左ペインの [デプロイメント] から [EJB] を選択します。

  2. リストの中で更新する EJB をクリックします。

  3. 右ペインのダイアログから [コンフィグレーション] タブを選択し、デプロイ ボックスをチェックして EJB を更新します。

更新できるのは EJB 実装クラスだけで、パブリック インタフェースまたはパブリック サポート クラスは更新できません。

 


コンパイル済み EJB ファイルのデプロイ

コンパイル済みの EJB 2.0 JAR または EAR ファイルを作成するには、次の手順に従います。

  1. javac を使用して、EJB クラスとインタフェースをコンパイルします。

  2. EJB クラスとインタフェースを有効な JAR または EAR ファイルにパッケージ化します。

  3. JAR ファイルに対して weblogic.ejbc を使用して、WebLogic Server コンテナ クラスを生成します。ejbc の使用方法については、ejbcを参照してください。

以前のバージョンの WebLogic Server からコンパイル済みの EJB を作成するには、次の手順に従います。

  1. ejb.jar ファイルに対して weblogic.ejbc を実行して、EJB 2.0 のコンテナ クラスを生成します。

  2. コンパイル済み ejb.jar ファイルを wlserver\config\mydomain\applications にコピーします。

(再パッケージ化、再コンパイル、または既存の ejb.jar ファイルにコピーして)applications 内のコンパイル済み ejb.jar ファイルの内容を変更した場合、WebLogic Server は、自動デプロイメント機能を利用して、ejb.jar を自動的に再デプロイしようとします。

注意: 自動再デプロイメント機能は動的デプロイメントを利用するので、WebLogic Server が再デプロイできるのは EJB の実装クラスだけです。EJB のパブリック インタフェースを再デプロイすることはできません。

 


未コンパイルの EJB ファイルのデプロイメント

WebLogic Server コンテナを使用すると、未コンパイルの EJB クラスおよびインタフェースが入った JAR ファイルも自動的にデプロイすることができます。未コンパイル EJB ファイルはコンパイル済みファイルと同じ構造を持っていますが、次の点で異なります。

JAR ファイル内の .java または .class ファイルは、Java パッケージ階層と同じサブディレクトリにパッケージ化する必要があります。また、すべての ejb.jar ファイルと同じように、適切な XML デプロイメント ファイルを META-INF ディレクトリの最上位に置く必要があります。

未コンパイルのクラスをパッケージ化したら、JAR を wlserver\config\mydomain\applications ディレクトリにコピーするだけです。WebLogic Server は、必要に応じて、javac を自動的に実行して(またはユーザがコンパイラを指定して)、.java ファイルをコンパイルし、weblogic.ejbc を実行してコンテナ クラスを生成します。コンパイル済みクラスは、wlserver\config\mydomain\applications の新規 JAR ファイルにコピーされ、EJB コンテナにデプロイされます。

(再パッケージ化するか、JAR ファイルにコピーするかして)applications 内の未コンパイル JAR を変更した場合、WebLogic Server は、変更された JAR を同じ手順で自動的に再コンパイルして再デプロイします。

注意: 自動再デプロイメント機能は動的デプロイメントを利用するので、WebLogic Server が再デプロイできるのは EJB の実装クラスだけです。EJB のパブリック インタフェースを再デプロイすることはできません。

 

back to top previous page next page