WAR 파일

Web/WAS 2012. 1. 20. 13:06

WAR(Web ARchive)

kenu
2001-11-12 4:33오전

실행환경
windows XP eng buildNo #2600, 
Tomcat 4.0.1, 
apache 1.3.22, 
mod_webapp
		


jsp 진영에서 asp 에 대항해서 전쟁을 일으킨 것이 WAR 가 아닙니다. ^^. Web ARchive, web application 을 압축해 놓은 것이 WAR 파일입니다. 보다 쉽게 web application을 배포하고 설치하기 위해서 사용하는 기법입니다. Tomcat에 보면 webapps 란 디렉토리가 있습니다. 기본적으로 이 디렉토리에 WAR 파일을 놓으면 Tomcat 이 이것의 압축을 풀어서 사용할 준비를 하게 됩니다. 자동으로 war 파일의 이름을 따라서 Context 를 만들고 디렉토리를 만들어서 바로 사용할 수 있도록 합니다. war 파일은 어떻게 만들고 어떻게 사용하는지 이번 강좌에서 보겠습니다. 제가 배포하는 okboard 의 war 버전인 okbbs.war 를 어떻게 만들고 설치(deploy 라는 단어를 사용합니다.)하는지 알게 될 것입니다. 

일단 개발이 완료되면 디렉토리를 만들어서 필요한 파일들을 복사하고 정리합니다. 

ROOT 에서 개발한 것을 okbbs 라는 디렉토리를 만들어서 복사해 놓습니다. 필요한 jar 파일의 경우 WEB-INF/lib 디렉토리에 복사해서 배포할 수 있습니다. okboard 0_94 의 경우 cos.jar(upload 용), classes12_1.jar(oracle jdbc driver), mail.jar, activation.jar(javamail 용), 4개의 jar 파일을 포함합니다. 

cmd 창을 열어서 해당 디렉토리로 이동합니다. 저의 경우는 c:/tomcat4/webapps/okbbs 가 됩니다. 파일 생성시는 jar 를 사용하고 압축하는 파일의 이름만 확장자를 war 로 합니다. jar cvf ../okbbs.war * 라고 하면 

webapps 디렉토리에 okbbs 내부의 디렉토리가 압축이 되어서 okbbs.war 파일이 생성됩니다. 

제대로 되었는지 확인해보겠습니다. 지금부터는 이 war 파일을 설치(deploy) 하는 것입니다. okbbs 를 지우기 위해서 tomcat을 멈춥니다. 저의 경우 windows XP 에 service 로 설치되어있기 때문에 cmd prompt 상에서 net stop "apache tomcat" 으로 멈출 수 있습니다. 시작 메뉴에서 Tomcat 을 시작한 경우 시작메뉴에서 Tomcat 을 멈춰주세요. 

이제 okbbs 디렉토리를 완전히 삭제합니다. 그런데, war 파일이 자동으로 풀릴 때 생성되는 디렉토리는 war 파일의 이름을 따라가게 됩니다. 압축은 okbbs.war 로 했지만 kenu.war 로 이름을 바꿀 경우 kenu 라는 디렉토리가 생성되면서 kenu라는 Context 도 생기게 됩니다. okbbs.war 파일의 이름을 kenu.war 로 바꿔보시죠. 그냥 okbbs 로 하실 분들은 그대로 하시고요. 주의할 점은 이미 같은 이름의 디렉토리가 있다면 압축은 풀리지 않습니다. kenu 라는 디렉토리가 있다면 kenu.war 는 그냥 넘어간다는 뜻이죠. 말이 길어지는데, okbbs.war 를 ROOT 에 풀고 싶으시면 ROOT.war 로 하면 되지만 이미 있는 ROOT 디렉토리는 지워야 된다는 뜻입니다. 

이제 Tomcat 을 시작합니다. net start "apache tomcat" 서비스로 등록한 Tomcat 을 시작합니다. 

잠시 후 webapps 디렉토리를 보면 kenu 라는 디렉토리가 생겼고, 그 아래 okbbs 에 있던 파일들이 나타났습니다. 어휴 반가워라... ^^; Tomcat만 standalone 으로 설치하신 분들은 여기서 다 된 것입니다. 즉, apache와 연동하지 않으셨다면 브라우저에서 http://localhost:8080/kenu/index.html 하면 보실 수 있습니다. (okboard 는 okboard디렉토리에 있는 board_create.jsp 를 먼저 실행해서 table, index, procedure 를 생성해야 사용할 수 있습니다. 실행하시기 전에 db.jsp 와 db.properties , boardcfg.jsp 의 값을 변경해주세요.) 

apache와 Tomcat3.2.* 를 연동하신 분들은 apache만 재시동하시면 새로 만든 Context(kenu) 가 바로 apache에 추가되서 사용됩니다. Tomcat4와 연동하신 분들은 아파치의 conf 디렉토리에 있는 httpd.conf 에 Context(kenu)를 추가해 주어야 합니다. mod_webapp 이 mod_jk 보다 좀 불편한 것 같군요. WebAppDeploy kenu conn /kenu 줄을 추가합니다. 

net stop apache 와 net start apache 로 apache를 재시동합니다. 

브라우저에서 열어보시면 원하는 화면이 나옵니다. war 파일이 정상적으로 설치(deploy) 된 것입니다. 

이 기능을 조절하는 것은 tomcat의 conf 디렉토리에 있는 server.xml 파일의 아래 부분입니다. <Host name="localhost" debug="0" appBase="webapps" unpackWARs="true"> 가상호스트에 관해서는 나중에 기회가 있으면 다뤄보도록 하겠습니다. 요즘 질문이 너무 많아서리... ^^; 

두 가지 더 말씀드리고 싶은 것이 있습니다. 첫번째는 WEB-INF/lib 에 있는 jar 파일들은 환경변수인 classpath 에 추가하지 않아도 Tomcat 이 자동으로 인식한다는 것입니다. 다른 하나는 처음 jsp 를 실행할 때 다운된 것처럼 동작하지 않을 경우가 있습니다. 그럴 경우는 Tomcat과 apache 를 모두 중지한 다음에 다시 시작하면 원활하게 동작합니다. Tomcat3에서는 좀처럼 없지만 Tomcat4에 와서는 apache와 연동했을 경우 자주 그런 현상이 나타납니다. 그럼 전 또 공부하러 갑니다. jsp 에는 너무도 많은 것들이 숨어있습니다. 좋은 하루 되십시오. 

출처 -  http://okjsp.pe.kr/lecture/lec10/war01.xml 


Posted by linuxism

댓글을 달아 주세요