2013년 11월 18일 월요일

Spring ContextLoaderListener 같은 리스너 구현,자바서블릿교육학원, web.xml 서블릿 컨텍스의 리스닝을 위해서는 ServletContextListner를 구현하면 되는데 ...

Spring ContextLoaderListener 같은 리스너 구현,자바서블릿교육학원, web.xml

서블릿 컨텍스의 리스닝을 위해서는 ServletContextListner를 구현하면 되는데 이 인터페이스의 이벤트를 이용하여 컨텍스가 시작되거나 종료될 때 어떤일 을 할 수 있다.
 
contextDestroyed는 컨텍스가 더 이상의 웹요청을 받을 수 없을 때 , 즉 톰캣등이 종료될 때 호출되는 이벤트이고 contextInitialized 메소드는 톰캣등이 시작됨으로서 컨텍스트가 요청을 받아들 일 수 있을때 호출되는 이벤트이다.
 
결국 서블릿 컨텍스트가 초기화 되거나 소멸될 때 어떤 일을 하고싶을 때 이용하면 된다.
 
1. OnjListener.java

package onj;
 
import javax.servlet.ServletContextListener;
import javax.servlet.ServletContextEvent;
import javax.servlet.*;
 
public class OnjListener implements ServletContextListener {
 private ServletContext ctx = null;

 //Tomcat Shutdown 시키면 아래 메시지 확인
 public void contextDestroyed(ServletContextEvent event) {
  System.out.println(">>> onjweb Webapp destroyed!!");
  this.ctx = null;
 }

 //Tomcat시작시 아래 메시지 출력
 public void contextInitialized(ServletContextEvent event) {
  this.ctx = event.getServletContext();
  System.out.println(">>> onjweb Webapp start!!");
 } 
}
 

2. web.xml(리스너등록)
 
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
 <listener>
    <listener-class>onj.OnjListener</listener-class>
  </listener> 
</web-app>

3. 결과(통캣을 기동하고 리로드 시켜보라.)
 
Tomcat을 그냥 꺼버리면 contextDestroyed에서 정의한 메시지가 출력안되니 , 테스트를 위해 OnjListener.java를 살짝 수정해 보라.

Tomcat의 conf/context.xml에서 Context정의시 reloadable=true 로 되어 있다면 Context가 reload되니 그때 contextDestroyed() 가 호출된다.
 
[context.xml]
19라인쯤에 <context> 를 <Context reloadable="true">로 수정  (자바코드 변경 시 톰캣 자동 리로드 설정)
 
11월 09, 2013 3:54:15 오전 org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
11월 09, 2013 3:54:15 오전 org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.42
11월 09, 2013 3:54:16 오전 org.apache.catalina.core.ApplicationContext log
INFO: No Spring WebApplicationInitializer types detected on classpath
>>> onjweb Webapp start!!
11월 09, 2013 3:54:16 오전 org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
11월 09, 2013 3:54:16 오전 org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
11월 09, 2013 3:54:16 오전 org.apache.catalina.startup.Catalina start
INFO: Server startup in 1155 ms
11월 09, 2013 3:54:46 오전 org.apache.catalina.core.StandardContext reload
INFO: Reloading Context with name [/onjweb] has started
>>> onjweb Webapp destroyed!!
11월 09, 2013 3:54:47 오전 org.apache.catalina.core.ApplicationContext log
INFO: No Spring WebApplicationInitializer types detected on classpath
>>> onjweb Webapp start!!
11월 09, 2013 3:54:47 오전 org.apache.catalina.core.StandardContext reload
INFO: Reloading Context with name [/onjweb] is completed


[개강임박강좌, 오프라인교육장에 오시면 보다 자세히 배울 수 있습니다.]

오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(
www.onjprogramming.co.kr)

[주간]
  [11/25]Spring3.X, MyBatis, Hibernate실무과정
  [11/25]초보자를위한실전SQL
  [11/25]안드로이드개발자과정
  [11/25]iPhone 하이브리드 앱 개발 실무과정

[평일야간]
  [11/22]자바초보에서안드로이드까지
  [11/26]JAVA&WEB프레임워자실무과정
  [11/26]iPhone하이브리드앱개발실무과정
  [11/26]웹퍼블리싱 마스터
  [11/27]SQL초보에서실전전문가까지
  [11/28]Spring3.X, MyBatis, Hibernate실무과정

[주말]
  [11/23]JAVA&WEB프레임워크실무과정
  [11/23]웹퍼블리싱 마스터
  [11/23]C#,ASP.NET마스터
  [11/30]SQL초보에서전문가까지
  [11/30]Spring3.X,MyBatis,Hibernate실무과정


댓글 없음:

댓글 쓰기