사용자 도구

사이트 도구


java:tomcat:contextreload

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

java:tomcat:contextreload [2012/06/03 16:58]
kwon37xi 새로 만듦
java:tomcat:contextreload [2012/06/03 17:03] (현재)
kwon37xi
줄 19: 줄 19:
   * "Context Reloaded!!" 메시지가 나오면서 Reloading이 완료된다.   * "Context Reloaded!!" 메시지가 나오면서 Reloading이 완료된다.
  
 +===== 소스 =====
 +<code java>
 +package kr.pe.kwonnam.tomcat.reloader;
 +
 +import java.io.IOException;
 +
 +import javax.servlet.ServletException;
 +import javax.servlet.http.HttpServletResponse;
 +
 +import org.apache.catalina.Container;
 +import org.apache.catalina.Context;
 +import org.apache.catalina.connector.Request;
 +import org.apache.catalina.connector.Response;
 +import org.apache.catalina.valves.ValveBase;
 +
 +/**
 + * Reload Tomcat Context by requesting URL
 + *
 + * Context의 reloadable="false"인 상태에서도 /reloadContext URL을 호출하면 해당 컨텍스트가 Reloading 된다.
 + *
 + * @author 손권남 kwon37xi@gmail.com
 + *
 + */
 +public class TomcatReloadValve extends ValveBase {
 +
 + private static final String RELOAD_CONTEXT_URI = "/reloadContext";
 +
 + @Override
 + public void invoke(Request request, Response response) throws IOException,
 + ServletException {
 +
 + Container container = getContainer();
 +
 + String requestUri = request.getRequestURI();
 +
 + String reloadUri = request.getContextPath() + RELOAD_CONTEXT_URI;
 +
 + if (requestUri.startsWith(reloadUri)
 + && container instanceof Context) {
 + reloadContext(response, container);
 + return;
 + }
 +
 + getNext().invoke(request, response);
 + }
 +
 + private void reloadContext(Response response, Container container)
 + throws IOException {
 + ((Context) container).reload();
 + HttpServletResponse httpResponse = response.getResponse();
 +
 + httpResponse.setContentType("text/plain;charset=utf-8");
 + httpResponse.getWriter().write("Context Reloaded!!");
 + httpResponse.getWriter().close();
 +
 + return;
 + }
 +
 +}
 +</code>
  
java/tomcat/contextreload.1338710330.txt.gz · 마지막으로 수정됨: 2012/06/03 16:58 저자 kwon37xi