Listener :: ServletContextListener
1. ServletContextListener의 활용
BEA WebLogic 이나 TmaxSoft JEUS등 WAS(Web Application Server) 제품들에는 환경설정 파일에
StartUp Class, ShutDown Class을 등록하여 엔진이 구동될 때 실행하거나 종료해야할 메서드를 지정할수 있는 기능이 있다.
ServletContextListener는 이와 유사하게 각 Web Application(Context) 단위로 이와 비슷한 기능을 할수 있게 해준다. ServletContextListener는 Interface 이면 구현 클래스에서는 다음과 같은 메소드를 구현해야 합니다.
void contextDestroyed(ServletContextEvent sce) Context가 종료 될 때 실행 할 내용등록
void contextInitialized(ServletContextEvent sce) Context가 처음 구동될 때 실행 할 내용등록
★ ServletContextListener의 샘플 소스
package context;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class ContextInit implements ServletContextListener {
public void contextInitialized(ServletContextEvent contextEvent) {
System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
System.out.println("ContextInitialized Call!");
counter.count = 100;
System.out.println("Counter : "+counter.count);
System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
}
public void contextDestroyed(ServletContextEvent arg0) {
System.out.println("******************************************************************");
System.out.println("contextDestroyed Call!");
counter.count = 0;
System.out.println("Counter : "+counter.count);
System.out.println("******************************************************************");
}
}
리스너를 구현한 클래스입니다. contextInitialized 메소드에서는 context.counter 클래스의 count 변수를 100으로 세팅하고, contextDestroyed 메소드에서는 이를 0으로 다시 세팅합니다.
<?xml version = '1.0' encoding = 'EUC-KR'?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<description>Empty web.xml file for Web Application</description>
<session-config>
<session-timeout>35</session-timeout>
</session-config>
<mime-mapping>
<extension>html</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
<mime-mapping>
<extension>txt</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
<listener>
<listener-class>context.ContextInit</listener-class>
</listener>
</web-app>
Web.xml 파일의 내용입니다. Listener tag에 작성한 ContextInit 클래스를 등록합니다.
package context;
public class counter {
static {
System.out.println("Counter Create!");
}
public static int count = 0;
public counter() {
}
public static void counter() {
count++;
}
}
Static 변수를 포함한 클래스입니다.
// servletContextTest.jsp
<%@ page contentType="text/html;charset=EUC-KR"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>servvletContextCounterTest</title>
</head>
<body>
<%
context.counter.counter();
%>
Count : <%=context.counter.count%>
</body>
</html>
테스트 Client JSP 입니다.
ServletContextListener의 샘플 배치 및 실행
1. TomCat 5.X에서 실행
ContextTest라는 컨텍스트를 등록하여 샘플 파일을 설치 합니다.
위화면에서 ContextTest 어플리케이션을 stop, start하면 아래와 같은 로그가 출력 됩니다.
아래는 테스트 클라이언트 실행 화면입니다.
2. JEUS 4.2에서 실행
1)WEBMain.xml 파일에 다음과 같이 등록한다.
<context>
<context-name>localtest</context-name>
<context-path>/localtest</context-path>
</context>
2)jeus-web-dd_localtest.xml 파일을 다음과 같이 생성하여 WEBMain.xml 파일과 같은 위치에 저장한다.
<?xml version="1.0"?>
<!DOCTYPE jeus-web-dd PUBLIC "-//Tmax Soft., Inc.//DTD JEUS WEB Deployment Info 4.0//EN"
"http://www.tmaxsoft.com/jeus/dtd/4.0/jeus-web-dd.dtd">
<jeus-web-dd>
<context>
<context-name>localtest</context-name>
<docbase>localtest</docbase>
<auto-reload>
<enable-reload>true</enable-reload>
<check-on-demand>true</check-on-demand>
</auto-reload>
</context>
</jeus-web-dd>
JEUS을 리스타트 시키거나 jeusadmin에서 downeng, stareng 명령어로 엔진을 리스타트 시킨다.
Webapp/localtest 디렉토리가 자동으로 생성되면 샘플 파일을 설치 합니다.
JEUS에서 Context 리스타트 명령어는 webadmin 툴에서 restart MyGroup localtest 명령오로 하실 수 있습니다.
Tomcat과 같은 결과를 화면에서 보실 수 있습니다.
[출처] ServletContextListener의 활용|작성자 따라쟁이
'JAVA' 카테고리의 다른 글
MD5 암호화 예제 (0) | 2019.02.27 |
---|---|
mac address (0) | 2019.02.15 |
List 정렬 (0) | 2019.02.15 |
[JAVA]JUnit 테스트 코드 (0) | 2017.11.30 |
[JAVA]jsp 파일 읽어 저장 (0) | 2017.11.30 |