WebLogic Server アプリケーションの開発
![]() |
![]() |
![]() |
![]() |
以下の節では、WebLogic Server のアプリケーション ライフサイクル イベントに応答するアプリケーションの作成方法について説明します。
警告 : アプリケーション スコープの起動クラスと停止クラスは、このリリースの WebLogic Server では非推奨です。起動クラスと停止クラスに関するこの章の情報は、下位互換性のためにのみ提供されています。このクラスの代わりに、ライフサイクル リスナ イベントをアプリケーションで使用してください。
アプリケーション ライフサイクル リスナ イベントは、デプロイメント、アンデプロイメント、および再デプロイメント時の動作を開発者が制御できるハンドルを提供します。この節では、アプリケーション ライフサイクル リスナ イベントの使用方法について説明します。
WebLogic Server には、リスナ クラス、停止クラス、および起動クラスを拡張するときに使用できる 4 つのアプリケーション ライフサイクル イベントがあります。以下のものが含まれます。
public void preStart(ApplicationLifecycleEvent evt) {}
public void postStart(ApplicationLifecycleEvent evt) {}
public void preStop(ApplicationLifecycleEvent evt) {}
public void postStop(ApplicationLifecycleEvent evt) {}
注意 : 起動クラスおよび停止クラスでは、main{} メソッドのみを実装します。リスナ用に提供されたメソッドを実装した場合は、無視されます。
注意 : ApplicationLifecycleListener に remove{} メソッドは提供されていません。イベントが、デプロイメントでの起動時 (prestart と poststart) およびアンデプロイメントでの停止時 (prestop と poststop) にのみ開始されるためです。
これらのイベントを使用するには、weblogic-application.xml デプロイメント記述子に登録する必要があります。「エンタープライズ アプリケーションのデプロイメント記述子の要素」を参照してください。以下の要素を定義します。
抽象クラス (WebLogic Server 付属のクラス) weblogic.application.ApplicationLifecycleListener を拡張することにより、リスナを作成します。作成したリスナは、コンテナの検索対象になります。
WebLogic Server の ApplicationLifecycleListener 抽象クラスに提供されている次のメソッドをオーバーライドし、必要な機能を追加してアプリケーションを拡張します。
コード リスト 9-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
}
コード リスト 9-2 に、停止クラスを実装する方法を示します。停止クラスは、preStop イベントおよび postStop イベントにアタッチできます。この例では、パブリック クラス MyShutdown が ApplicationLifecycleListener を拡張しています。
import weblogic.application.ApplicationLifecycleListener;
import weblogic.application.ApplicationLifecycleEvent;
public class MyShutdown extends ApplicationLifecycleListener {
public static void main(String[] args) {
System.out.println
("MyShutdown(main): in main .. should be for post-stop");
} // main
}
コード リスト 9-3 に、起動クラスを実装する方法を示します。起動クラスは、preStart イベントおよび postStart イベントにアタッチできます。この例では、パブリック クラス MyStartup が ApplicationLifecycleListener を拡張しています。
import weblogic.application.ApplicationLifecycleListener;
import weblogic.application.ApplicationLifecycleEvent;
public class MyStartup extends ApplicationLifecycleListener {
public static void main(String[] args) {
System.out.println
("MyStartup(main): in main .. should be for pre-start");
} // main
}
次の例に、weblogic-application.xml デプロイメント記述子ファイルでアプリケーション ライフサイクル イベントをコンフィグレーションする方法を示します。URI パラメータは必須ではありません。アプリケーションの $CLASSPATH 内であれば任意の位置にクラスを配置できます。ただし、$CLASSPATH にクラスの位置を定義する必要があります。EAR に APP-INF/classes ディレクトリまたは APP-INF/lib ディレクトリが存在する場合は、これらのディレクトリにリスナを配置できます。この場合、リスナは自動的に $CLASSPATH に含まれます。
次の例に、URI パラメータを使用してアプリケーション ライフサイクル イベントをコンフィグレーションする方法を示します。この例では、アーカイブ foo.jar はクラスを含み、EAR ファイルの最上位に存在します (例 : myEar/foo.jar)。
コード リスト 9-4 URI パラメータを使用したアプリケーション ライフサイクル イベントのコンフィグレーション
<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 パラメータを使用せずにアプリケーション ライフサイクル イベントをコンフィグレーションする方法を示します。
コード リスト 9-5 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) に対してリスナが登録されている場合、完全な再デプロイメント時に次のイベント シーケンスが表示されます。
![]() ![]() |
![]() |
![]() |