![]() ![]() ![]() ![]() |
以下の節では、WebLogic Server のアプリケーション ライフサイクル イベントに応答するアプリケーションの作成方法について説明します。
警告 : | アプリケーション スコープの起動クラスと停止クラスは、WebLogic Server のリリース 9.0 以降では非推奨になりました。起動クラスと停止クラスに関するこの章の情報は、下位互換性のためにのみ提供されています。このクラスの代わりに、ライフサイクル リスナ イベントをアプリケーションで使用してください。 |
アプリケーション ライフサイクル リスナ イベントは、デプロイメント、アンデプロイメント、および再デプロイメント時の動作を開発者が制御できるハンドルを提供します。この節では、アプリケーション ライフサイクル リスナ イベントの使用方法について説明します。
WebLogic Server には、リスナ クラス、停止クラス、および起動クラスを拡張するときに使用できる 4 つのアプリケーション ライフサイクル イベントがあります。以下のものが含まれます。
public void preStart(ApplicationLifecycleEvent evt) {}
public void postStart(ApplicationLifecycleEvent evt) {}
public void preStop(ApplicationLifecycleEvent evt) {}
public void postStop(ApplicationLifecycleEvent evt) {}
警告 : | アプリケーション スコープの停止クラスは、WebLogic Server のリリース 9.0 以降では非推奨になりました。代わりに、ライフサイクル リスナを使用してください。 |
警告 : | アプリケーション スコープの停止クラスは、WebLogic Server のリリース 9.0 以降では非推奨になりました。代わりに、ライフサイクル リスナを使用してください。 |
注意 : | 起動クラスおよび停止クラスでは、main{} メソッドのみを実装します。リスナ用に提供されたメソッドを実装した場合は、無視されます。 |
注意 : | ApplicationLifecycleListener に remove{} メソッドは提供されていません。イベントが、デプロイメントでの起動時 (prestart と poststart) およびアンデプロイメントでの停止時 (prestop と poststop) にのみ開始されるためです。 |
これらのイベントを使用するには、weblogic-application.xml デプロイメント記述子に登録する必要があります。「エンタープライズ アプリケーションのデプロイメント記述子の要素」を参照してください。以下の要素を定義します。
抽象クラス (WebLogic Server 付属のクラス) weblogic.application.ApplicationLifecycleListener を拡張することにより、リスナを作成します。作成したリスナは、コンテナの検索対象になります。
WebLogic Server の ApplicationLifecycleListener 抽象クラスに提供されている次のメソッドをオーバーライドし、必要な機能を追加してアプリケーションを拡張します。
コード リスト 10-1 に、ApplicationLifecycleListener をオーバーライドする方法を示します。この例では、パブリック クラス MyListener が ApplicationLifecycleListener を拡張しています。
import weblogic.application.ApplicationLifecycleListener;
import weblogic.application.ApplicationLifecycleEvent;
public class MyListener extends ApplicationLifecycleListener {
public void preStart(ApplicationLifecycleEvent evt) {
System.out.println
("MyListener(preStart) -- we should always see you..");
} // preStart
public void postStart(ApplicationLifecycleEvent evt) {
System.out.println
("MyListener(postStart) -- we should always see you..");
} // postStart
public void preStop(ApplicationLifecycleEvent evt) {
System.out.println
("MyListener(preStop) -- we should always see you..");
} // preStop
public void postStop(ApplicationLifecycleEvent evt) {
System.out.println
("MyListener(postStop) -- we should always see you..");
} // postStop
public static void main(String[] args) {
System.out.println
("MyListener(main): in main .. we should never see you..");
} // main
}
コード リスト 10-2 に、停止クラスを実装する方法を示します。停止クラスは、preStop イベントおよび postStop イベントにアタッチできます。この例では、パブリック クラス MyShutdown は ApplicationLifecycleListener を拡張しません。これは、weblogic-application.xml デプロイメント記述子で宣言された停止クラスは WebLogic Server 固有のインタフェースに依存しないためです。
import weblogic.application.ApplicationLifecycleListener;
import weblogic.application.ApplicationLifecycleEvent;
public class MyShutdown {
public static void main(String[] args) {
System.out.println
("MyShutdown(main): in main .. should be for post-stop");
} // main
}
コード リスト 10-3 に、起動クラスを実装する方法を示します。起動クラスは、preStart イベントおよび postStart イベントにアタッチできます。この例では、パブリック クラス MyStartup は ApplicationLifecycleListener を拡張しません。これは、weblogic-application.xml デプロイメント記述子で宣言された起動クラスは WebLogic Server 固有のインタフェースに依存しないためです。
import weblogic.application.ApplicationLifecycleListener;
import weblogic.application.ApplicationLifecycleEvent;
public class MyStartup {
public static void main(String[] args) {
System.out.println
("MyStartup(main): in main .. should be for pre-start");
} // main
}
run-as-principal-name 要素を使用して起動イベントや停止イベントに対しユーザ ID を指定できる、ロールベース機能を備えたアプリケーション ライフサイクル イベントをコンフィグレーションできます。ただし、アプリケーション ライフサイクル リスナ用に定義された run-as-principal-name ID が管理者である場合、アプリケーション デプロイヤには管理者特権が必要です。これがない場合、デプロイメントは失敗します。
listener
要素内に、run-as-principal-name element 要素を追加して、イベントの起動や停止を行う特権を持つユーザを指定します。次に例を示します。<listener>
<listener-class>myApp.MySessionAttributeListenerClass</listener-class>
<run-as-principal-name>javajoe</run-as-principal-name>
</listener>
ここに指定する ID はシステムの有効なユーザ名である必要があります。run-as-principal-name
を指定しない場合、アプリケーション ライフサイクル リスナの実行のための run-as
ID としては、デプロイメント開始者のユーザ ID が使用される。
次の例に、weblogic-application.xml デプロイメント記述子ファイルでアプリケーション ライフサイクル イベントをコンフィグレーションする方法を示します。URI パラメータは必須ではありません。アプリケーションの $CLASSPATH 内であれば任意の位置にクラスを配置できます。ただし、$CLASSPATH にクラスの位置を定義する必要があります。EAR に APP-INF/classes ディレクトリまたは APP-INF/lib ディレクトリが存在する場合は、これらのディレクトリにリスナを配置できます。この場合、リスナは自動的に $CLASSPATH に含まれます。
次の例に、URI パラメータを使用してアプリケーション ライフサイクル イベントをコンフィグレーションする方法を示します。この例では、アーカイブ foo.jar はクラスを含み、EAR ファイルの最上位に存在します (例 : myEar/foo.jar)。
<listener>
<listener-class>MyListener</listener-class>
<listener-uri>foo.jar</listener-uri>
</listener>
<startup>
<startup-class>MyStartup</startup-class>
<startup-uri>foo.jar</startup-uri>
</startup>
<shutdown>
<shutdown-class>MyShutdown</shutdown-class>
<shutdown-uri>foo.jar</shutdown-uri>
</shutdown>
次の例に、URI パラメータを使用せずにアプリケーション ライフサイクル イベントをコンフィグレーションする方法を示します。
<listener>
<listener-class>MyListener</listener-class>
</listener>
<startup>
<startup-class>MyStartup</startup-class>
</startup>
<shutdown>
<shutdown-class>MyShutdown</shutdown-class>
</shutdown>
アプリケーションの完全な再デプロイメントが発生する場合にのみ、アプリケーション ライフサイクル イベントが開始されます。アプリケーションの完全な再デプロイメント時に、アプリケーション ライフサイクル イベントが登録済みであれば、アプリケーション ライフサイクルはまず停止シーケンスを開始し、次にクラスを再初期化し、その後開始シーケンスを実行します。
たとえば、完全なアプリケーション ライフサイクル イベント セット (preStart、postStart、preStop、postStop) に対してリスナが登録されている場合、完全な再デプロイメント時に次のイベント シーケンスが表示されます。
以下の節では、WebLogic Server のアプリケーション バージョン ライフサイクル イベントに応答するアプリケーションの作成方法について説明します。
WebLogic Server はアプリケーション バージョン ライフサイクル イベントの通知を提供しており、ApplicationVersionLifecycleListener
クラスを拡張して weblogic-application.xml
でライフサイクル リスナを指定できます。「エンタープライズ アプリケーションのデプロイメント記述子の要素」および「URI パラメータを指定した場合と指定しない場合のライフサイクル イベントのコンフィグレーション例」を参照してください。
アプリケーション バージョン ライフサイクル イベントは次のように呼び出されます。
ApplicationVersionLifecycleEvent.isOwnVersion
メソッドを使用します。バージョン ライフサイクル イベントの種類の詳細については、ApplicationVersionLifecycleEvent
クラスを参照してください。
WebLogic Server には 4 つのアプリケーション バージョン ライフサイクル イベントがあります。
public void
preDeploy(ApplicationVersionLifecycleEvent evt)
public void
postDeploy(ApplicationVersionLifecycleEvent evt)
public void
preUndeploy(ApplicationVersionLifecycleEvent evt)
public void
postDelete(ApplicationVersionLifecycleEvent evt)
以下の表では、デプロイメント (V1)、プロダクション再デプロイメント (V2)、およびアンデプロイ (V2) の例を示します。
|
||||
|
![]() ![]() ![]() |