Servlet Conteext Listenerの使い方
3615 ワード
このJ 2 EEヒントはServlet Contactext Listenerの使い方を述べています。このイベントクラスはWebアプリケーションサービスの一部として、Webアプリケーションのservletコンテキストの変化を処理する通知である。これは、サーバーのそばで何かあったかをサーバーに連絡してくれている人がいるようです。もちろんモニターが必要です。したがって、コンテキストを通知して初期化と廃棄を行うとき、Servlet Contect Listnerは非常に有用である。
context Initialized()とcontext Destroyed()
Listenerは、モニターと訳されます。名前の通りServlet容器を監督します。アプリケーションが開始されると、それはcontext Initialized()方法を呼び出します。
アプリケーションがクローズされると、それはcontext Destroyed()メソッドを呼び出します。
この特性を利用して情報を初期化することができます。もちろん、Servlet類init()方法を利用して、設定ファイルでアプリケーションを起動させることもできます。
実行し、クローズするときにdestry()を実行しますが、このインターフェースを継承するのは容器の応用にもっと適しているはずです。
簡単な例を挙げると、いくつかのフォーラム、コミュニティとチャットルームの中で、オンラインを削除するタイムアウトのユーザーはこのインターフェースを利用して実現することができます。
JAVAのTimerTaskおよびTimer類を利用して、一定時間ごとに自動検出が可能です。
実例コードは以下の通りです
UserOnline TimerTask.java
package com.listeners;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletContextEvent;
import javax.servlet.*;
public class MyContextListener implements ServletContextListener {
private ServletContext context = null;
public void contextDestroyed(ServletContextEvent event){
//Output a simple message to the server's console
System.out.println("The Simple Web App. Has Been Removed");
this.context = null;
}
// Web 。
public void contextInitialized(ServletContextEvent event){
this.context = event.getServletContext();
//Output a simple message to the server's console
System.out.println("The Simple Web App. Is Ready");
}
}
WEB.XMLで
<web-app>
<listener>
<listener-class>
com.listeners.MyContextListener
</listener-class>
</listener>
<servlet/>
<servlet-mapping/>
</web-app>
Servlet Contactext Listenerインターフェースは両方の必要な実装方法があります。context Initialized()とcontext Destroyed()
Listenerは、モニターと訳されます。名前の通りServlet容器を監督します。アプリケーションが開始されると、それはcontext Initialized()方法を呼び出します。
アプリケーションがクローズされると、それはcontext Destroyed()メソッドを呼び出します。
この特性を利用して情報を初期化することができます。もちろん、Servlet類init()方法を利用して、設定ファイルでアプリケーションを起動させることもできます。
実行し、クローズするときにdestry()を実行しますが、このインターフェースを継承するのは容器の応用にもっと適しているはずです。
簡単な例を挙げると、いくつかのフォーラム、コミュニティとチャットルームの中で、オンラインを削除するタイムアウトのユーザーはこのインターフェースを利用して実現することができます。
JAVAのTimerTaskおよびTimer類を利用して、一定時間ごとに自動検出が可能です。
実例コードは以下の通りです
UserOnline TimerTask.java
package com.bcxy.servlet;
import java.util.TimerTask;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class UserOnlineTimerTask extends TimerTask {
Log log = LogFactory.getLog(UserOnlineTimerTask.class);
public void run() {
//
log.info(" ....");
}
}
SysListener.java
package com.bcxy.servlet;
import java.io.IOException;
import java.util.Timer;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class SysListener
extends HttpServlet
implements ServletContextListener {
Log log = LogFactory.getLog(SysListener.class);
Timer timer = new Timer();
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
//
}
public void contextInitialized(ServletContextEvent sce) {
log.info("initial context....");
timer.schedule(new UserOnlineTimerTask(), 0, 10000);
}
public void contextDestroyed(ServletContextEvent sce) {
log.info("destory context....");
timer.cancel();
}
}
ロゴ4 jを使っていないなら、ログ.info()をSystem.out.printl()に変更してもいいです。