Tomcat Context reload 단축키로 만들기 프로그래밍

Python으로 개발하다가 Java로 개발이 넘어오니까, Tomcat 리로딩 때문에 짜증이 이만 저만이 아니다.
자동 리로딩이 되긴 하지만 전혀 내가 원치 않는 타이밍(개발 중간)에 자기 맘대로 리로딩 되고는 정작 내가 원할 때는 리로딩이 자동으로 안되기도 한다. 이게 옛날에는 그러려니 했는데... 지금은 괜히 더 짜증이 많이 난다.. --;

Ubuntu Linux + Tomcat 환경에서 Tomcat 리로딩을 빠르게 자동으로 하는 단축키를 할당했다.

1. 일단 Auto Reload를 끈다. 내가 원할 때만 리로딩을 하게 한다.
<Context path="/mycontext" reloadable="false" 어쩌구.../>


2. 수동 리로딩을 위해서 tomcat-users.xml 에 사용자를 등록한다.
<user username="admin" password="admin" roles="manager"/>

roles="manager"인게 중요하다.

3. 원래는 톰캣을 띄운 후에 http://localhost:8080/manager/html 로 접속하면 화면을 보면서 컨텍스트를 선택해서 리로딩이 가능하지만 그것도 귀찮다. 명령어 한방으로 끝내자.
wget --spider --http-user=admin --http-password=admin http://localhost:8080/manager/html/reload?path=/mycontext

저 명령만 실행해도 Tomcat 로그 혹은 콘솔 창에서 mycontext 가 리로딩 되는 로그를 확인할 수 있다. 물론 사용자명,비밀번호,컨텍스트 명은 자신의 환경에 맞게 바꿔야 한단.

4. 리눅스에는 xbindkeys 라는 특정 명령을 단축키로 등록하는 프로그램이 있다. 이걸 이용해 저 명령을 시스템 단축키로 지정한다. xbindkeys 사용법 설명
$HOME/.xbindkeysrc 파일
# For the benefit of emacs users: -*- shell-script -*-
"wget --spider --http-user=admin --http-password=admin http://localhost:8080/manager/html/reload?path=/mycontext"
m:0x50 + c:61

위 설정은 Win+/ 에 저 명령을 등록한 것이다.

이제 xbindkeys를 실행한 뒤에 Win+/ 를 누를 때 마다 잽싸게 Tomcat의 mycontext 컨텍스트가 리로딩 된다.
"m:0x50 + c:61"은 키 매핑을 의미하는데 xbindkeys -k 명령을 실행하고 원하는 키 조합을 누르면 키 조합에 관한 문자열이 나온다. 그걸 복사해서 붙여 넣으면 원하는 대로 바꿀 수 있다. 단, 설정을 고친 뒤에는 xbindkeys를 kill 하고 재실행해야 한다.

특정 키에 명령을 넣는 프로그램들들은 물론이고, wget도 윈도우용으로 있기 때문에 윈도우에서 개발하는 사람들도 충분히 위와 같은 환경을 구축할 수 있다.