이벤트 타입
org.apache.catalina.CometEvent.EventType 에서 4개의 타입을 정의하고 있다.
획득법: CometEvent.getEventType()
총 4가지 타입이다.
CometEvent.EventType.BEGIN
CometEvent.EventType.READ
CometEvent.EventType.END
END일 경우 무한적으로 계속 발생을 하는데, CoemtEvent.close()를 호출해주면 더이상 END 이벤트가 발생하지 않는다.
이상하게도 꼭 2번 호출이 된다.
CometEvent.EventType.ERROR
ERROR일 경우에는 서브타입을 가지는데 그외(BEGIN, END, READ는?)에서 사용하면 NullPointerException이 날 수 있으니 주의
보통의 Comet 요청의 라이프 사이클은 아래와 같다.
BEGIN -> READ -> READ -> READ -> ERROR/TIMEOUT-> END -> END
서브 타입
org.apache.catalina.CometEvent.EventSubType 에서 6개의 서브타입을 정의하고 있다.
획득법: CometEvent.getEventSubType()
CLIENT_DISCONNECT
IOEXCEPTION
SERVER_SHUTDOWN
SESSION_END
TIMEOUT
WEBAPP_RELOAD
요청과 응답을 처리해주기 위해서는 HttpServletRequest, HttpServletResponse를 적절히 잘 처리해주어야 한다.
HttpServletRequest
서블릿 요청에 대한 정보가 담겨 있다. 이것은 일반 서블릿에서 사용하는
javax.servlet.http.HttpServletRequest 인터페이스이다.
획득법: CometEvent.getHttpServletRequest()
RESTful 에서는 URL 경로가 중요하니 획득법을 정리해보자.
http://host/context/map/path1/path2/path3 를 HTTP GET으로 호출했다고 치자.
아래와 같은 web.xml에 서블릿 매핑이 되어 있다고 한다.
<servlet-mapping>
<servlet-name>ServletHandler</servlet-name>
<url-pattern>/map/*</url-pattern>
</servlet-mapping>
HttpServletRequest request = CometEvent.getHttpServletRequest();
request.getContextPath(); => 콘텍스트 : /context
request.getServletPath(); => 서블릿 경로 : /map
request.getPathInfo(); => 맨 마지막 경로 : /path1/path2/path3
request.getRequestURL(); => 전체 URL : http://host/context/map/path1/path2/path3
HttpServletResponse
서블릿이 요청할 수 있는 인스턴스이다. 이것도 역시 일반 서블릿에서 사용하는
javax.servlet.http.HttpServletResponse 인터페이스이다.
획득법: CometEvent.getHttpServletResponse()
'Programing' 카테고리의 다른 글
그래프 그리기 (0) | 2012.10.15 |
---|---|
Comet 부하테스트 (0) | 2012.09.21 |
톰캣 - 이클립스에서 Comet 프로젝트 만들기 (0) | 2012.09.21 |
Socket (소켓) 프로그래밍 (0) | 2012.09.21 |
SNMP - 래퍼 net-snmp (0) | 2012.09.21 |