톰캣, 루트에서 war 돌리기
2009/01/03 03:12나는 원격 서버에서 돌아가는 톰캣에서, 두가지를 동시에 하고 싶었다.
- http://서버주소/Test/ 가 아닌, http://서버주소/ 에서 Test.war을 구동하기
- 이클립스에서 단축키 한방에, Test.war을 서버로 올리기
1번의 첫번째 방법은, 톰캣의 server.xml을 수정하는 것이다. 해당 어플리케이션의 appBase를 수정하고, Context Root를 빈 문자열 “”로 설정하면 된다. 하지만, 이미 루트 디렉토리에서 실행되는 webapps는 제거해야 한다. 이 방법은 webapps를 사용할 수 없기 때문에, webapps에 포함된 톰캣 매니저를 사용할 수 없다.
2번의 간단한 방법은 Ant와 Tomcat Deployer를 사용하는 것이다. 하지만, 치명적인 약점이 있는데, Tomcat Deployer가 톰캣 매니저를 사용해서 업로드한다. 톰캣 매니저를 사용해야만 한다.
즉, 1번을 하려면 2번이 안되고, 2번을 하려면 1번이 안된다.
……… 뭐 어쩌라고 ㅁ;ㅣㄴ아ㅓ리ㅏ -_-;;
톰캣 매니저를 사용하면서, 톰캣에서 war 파일을 루트 디렉토리에서 서비스하는 방법을 찾아서, 인터넷을 몇일동안 뒤졌는지 모르겠다. 결국엔 포기하고, 오늘은 10줄짜리 쉘 스크립트를 작성했다. 미리, war 파일을 서브버전에 commit해놓는거다. 내가 작성한 쉘 스크립트는 서브버전에서 마지막의 Test.war을 export로 가져오고, 톰캣에서 appBase로 해놓은 디렉토리를 비우고, jar을 이용해서 Test.war을 그 디렉토리에 압축을 푼다. 그 후에 톰캣을 restart한다. 으하하. 완벽했다. 톰캣 매니저는 사용할 수 없었지만, ssh로 접속한 상태에서 쉘 스크립트를 한번만 실행해주면 되었다.
하지만, -_-;
200만배쯤 간단한 방법이 있었다.
war파일 이름을, ROOT.war 로 하면 된다.
톰캣 매니저로 ROOT.war을 올리면 된다.
단지, 파일 이름을 Test.war이 아닌, ROOT.war로 하기만 하면 되는거였다.
개-간단하지 않은가!
후우… 내가 했던 삽질은 다 뻘짓이었…
아… 쉘 스크립트…
자고로, 무식하면 손발이 고생한다.
p.s.1. 백일몽님께서 알려주셨다. 감사합니다. ㅠ_ㅠ
p.s.2. 아…. 톰퀘엙!!!!

