2013년 11월 17일 일요일

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

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실무과정


댓글 없음:

댓글 쓰기