내용으로 건너뛰기
권남
사용자 도구
로그인
사이트 도구
검색
도구
문서 보기
이전 판
역링크
최근 바뀜
미디어 관리자
사이트맵
로그인
>
최근 바뀜
미디어 관리자
사이트맵
추적:
java:tomcat:contextreload
이 문서는 읽기 전용입니다. 원본을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
====== Tomcat Context Reloader ====== Tomcat의 컨텍스트를 reloadable="false"인 상태에서, Tomcat Manager를 설치하지 않은 상태에서 수동 Reload 할 수 있는 Valve를 만들어 보았다. Reload Tomcat Context manually(without manager or reloadable="true" option). ===== 설정 ===== * {{:java:tomcat:tomcatreloadvalve.7z|Tomcat Reload Valve 소스와 Jar}} 파일에서 tomcatreloadvalve.jar 파일을 $CATALINA_HOME/lib 로 복사한다. * server.xml 혹은 context.xml의 **<Context> 항목**에 Valve를 추가한다. 항상 <Context> 항목에만 추가해야 한다.<code xml> <Context docBase="some" path="/some" reloadable="false" > <Valve className="kr.pe.kwonnam.tomcat.reloader.TomcatReloadValve"/> </Context> </code> * **reloadable="false"**로 둔다. 원래 이 Valve의 목적은 자동 Reloading을 끄고, 항상 수동으로 원하는 경우에만 Reloading하는 것이다. ===== 실행 ===== * 웹브라우저 혹은 wget 등으로 http://localhost:8080/**reloadContext** 를 호출한다. * 실제 URL의 도메인네임 부분은 자신의 톰캣 설정을 따른다. * "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.txt
· 마지막으로 수정됨: 2012/06/03 17:03 저자
kwon37xi
문서 도구
문서 보기
이전 판
역링크
맨 위로