Webアプリケーション始動時に処理を実行したい
Webアプリケーションを実装してアプリケーション始動時に実行した処理があったので方法を調べてみました。以前はWebSphereにはStartUpBeanなるものがあった記憶が、、、、
ServletContextListnerの実装
どうやらServletContextListnerインターフェースを実装したクラスを作成し、Web.xmlに登録しておけば良いようです。
SampleListener.java
package test;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class SampleListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent arg0) {
//アプリケーション終了時のコードを記述する
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
//アプリケーション始動時のコードを記述する
}
}
Web.xmlへの記述は以下の通り
web.xml
<listener>
<listener-class>test.SampleListner</listener-class>
</listener>
実際にデプロイしてみたところ、処理が呼ばれていることを確認しました。引数としてServletContextEventが渡されるため、コンテキスト・ルートを取得するなどの処理も書くことができます。
まとめ
Webアプリケーション始動時・終了時に実行する処理を実装したい場合には、ServletContextListenerインターフェースを実装したクラスを作成し、Web.xmlにリスナー・クラスとして登録すればOKです。