티스토리 뷰

개발할 때, 별 생각없이 체크하거나 체크 안하거나 하는 체크박스가 있었습니다.

바로 tomcat options 중에서 Serve module without publishing 이었습니다.

저는 그냥 무언가를 publishing 하지 않고 그냥 가져오는 구나 했었었죠.

체크를 해도 그만, 안해도 그만이라고 별 생각 없이 쓰고 있었습니다.

저희 팀 위키에 그 체크박스를 체크하라고 했지만 해도되고 안해도 되었기 때문에 저는 안했습니다.

성격상 해도 되고 안 해도 되는 것들은 안했거든요.



그런데 어느날, 개발 환경이 바뀌어서 다시 서버 세팅을 하고 있었습니다.

reimaginer 프로젝트라고 해보죠. 그런데 reimaginer 프로젝트는 뷰단 템플릿을 그려주는 viewTemplate 프로젝트에 의존적이었습니다. 그 템플릿 프레임워크는 벨로시티였고 src 밑에 벨로시티 파일인 *.vm 파일들이 있었습니다.

그런데 프로젝트를 띄우고 웹 페이지에 접속하면 해당 템플릿 부분만 미노출 되었습니다. 그리고 오류가 났죠. 위에 보시는 서버 path에는 *.vm 파일이 없다는 오류였습니다.

이걸로 별에 별 고민을 다했습니다. 하루를 삽질하고, 검색으로 겨우 실마리를 얻어서 체크박스에 체크하고 다시 해보니.....

너무 잘 되었습니다. 


*.vm 파일들은 해당 Server path에 퍼블리싱 되지 않는 거였습니다. (그 이유는 잘 모르겠습니다.  보통 src 하위의 일반 파일들도 빌드되면 classes 하위로 들어가긴 하는데 말이죠. 아직 모르는게 많아요.)

그래서 퍼블리싱 된 곳을 바라보지 말고 바로 의존하는 viewTemplate 프로젝트로 바로 바라보게 해서, *.vm파일들을 읽을 수 있게 했어야 되는 거죠.

삽질을 통해서 Serve modules without publishing 의 의미에 대해서도 알게 되었습니다. 의존하는 모듈들을 퍼블리싱 하지 않고 직접 가리키겠다(참조하겠다)는 뜻이죠. 


정리 ]

1. Serve modules without publishing 체크 안함

- tomcat 세팅에서 설정된 server path > deploy path로 의존하는 모듈들이 퍼블리싱된다.

- 메인 프로젝트는 의존하는 모듈을 참조한다.

- class 파일 이외에 다른 파일들은 퍼블리싱 안될 수 있다.


2. Server modules without publishing 체크함

- 메인 프로젝트는 의존하는 모듈(프로젝트 등)을 퍼블리싱 하지 않고 직접 참조한다.  


[참고 자료- eclipse 에서 tomcat 으로 개발할때 좀더 빠르게 수정된 결과 확인하기]

http://webkebi.zany.kr:9003/board/bView.asp?bCode=52299899&aCode=2196

일반적으로 JSF 나 JSP 를 개발할 때 Tomcat 을 사용해서 테스트를 하게 됩니다.
Tomcat 이 제우스나 WebLogic 같은 J2EE WAS 에 비해서 가볍고 사용하기 편리하기 때문이죠.

기존 이클립스 3.2 의 Web Tools 에서는 웹 프로젝트를 Tomcat 에 실행하기 위해서 별도의 폴더에
웹프로젝트의 파일들을 복사하는 과정을 내부적으로 수행하였습니다. 이 때 프로젝트에 필요한
라이브러리와 클래스들이 함께 WEB-INF\lib 폴더에 복사되었습니다.

이클립스 3.3 에서는 이러한 복사 과정 없이 웹 프로젝트의 원래 위치에서 바로 실행 될 수 있도록 하는 옵션이 추가되었습니다.
이 옵션을 사용하기 위해서는 Tomcat 서버 에디터를 열어서 옵션을 변경해야 합니다.
Tomcat 서버 에디터는 Servers 뷰에서 설치된 Tomcat 항목을 더블 클릭 해서 열 수 있습니다.
다음과 같이 서버 에디터 의 Server Options 섹션에서 'Serve modules without publishing'을 선택하면 됩니다.

그램#1 과 같이 하면, 페이지의 수정사항이 별도의 폴더에 복사되기를 기다릴 필요 없이 바로 확인할 수 있습니다.

주의: 이 옵션을 사용하게 되면 자바 클래스가 변경 되었을 때 어플리케이션이 자동으로 reloading 되지 않게 됩니다.
웹 프로젝트를 디버그 모드로 실행할 경우에 메소드안의 내용이 바뀌는 경우에는 자동으로 반영이 되지만 메소드나 필드가
추가되는 등의 변경이 일어날 경우에는 반영이 안되기 때문에 서버를 재시작해야 한는 문제가 있습니다.

만일 디버그 모드로 실행 중이 아니라면 메소드안의 내용이 바뀌어도 자동으로 반영되지 않습니다.
따라서 자바클래스의 메소드나 필드가 빈번히 추가/삭제 되는 경우라면 이 옵션을 사용하지 않는 것이 좋으며
이 옵션을 사용시에는 디버그모드로 실행하는 것이 좋습니다.

이클립스에서 JSP 나 XHTML 가 열려있는 상태라면 간단히 F11 단축키만을 사용해서 디버그 모드로 바로 실행해볼 수 있습니다.

댓글
댓글쓰기 폼