달력

12020  이전 다음

  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  

이클립스를 사용해서 개발을 하는 것은 기존 텍스트 에디터를 이용해서 작업하는 것과 많은 차이를 갖고 있다. 특히 웹 애플리케이션 개발에서는 더 많은 차이가 있게 되는데, 우선 언급해 볼 것이 서비스에 구성된 디렉토리와 개발에 사용되는 디렉토리의 차이점이다.

웹 애플리케이션은 서블릿 스펙에 따라서 디렉토리가 정해진 규칙을 갖고 있다.

/WEB-INF/ 브라우저를 통해서 접근이 불가능한 웹 애플리케이션 핵심정보들을 포함하고 있는 디렉토리
/WEB-INF/classes/ 패키지에 따른 디렉토리별 class파일과 properties 파일이 위치하는 곳
/WEB-INF/lib/ 웹 애플리케이션에서 사용되는 jar 파일이 존재하는 곳
/META-INF/context.xml 톰캣에서 사용되는 manager를 통한 배포용 웹 애플리케이션 Context정보 파일
브라우저를 통해서 접근 가능한 리소스들은 그 외의 디렉토리에 놓으면 된다.
특히 브라우저의 JVM 위에서 돌아가는 애플릿 class와 관련 jar 들은 /WEB-INF/ 밖에 위치해야 한다.
이 디렉토리들을 묶어서 Context 라고 얘기한다.

서비스와 관련된 디렉토리 구조가 위와 같고, 개발용 디렉토리 구조는 java 파일이라는 특징 때문에 다음과 같이 구성한다.

/src 패키지에 따른 디렉토리별 java 파일과 properties 파일이 존재하는 곳
/WebContent/ 앞에 언급한 브라우저를 통해서 접근 가능한 리소스들. 웹 애플리케이션의 컨텍스트 루트 디렉토리에 해당.
/WebContent/WEB-INF/ 앞에 언급했던 /WEB-INF/ 디렉토리와 같은 성격
/build/classes  /src 하위 자바파일의 컴파일된 class 들이 놓이는 곳. properties 파일은 자동 복사되는 곳.


개발 디렉토리와 WAS의 서비스되는 디렉토리의 매핑 즉 자연스런 연결은 빌드 툴인 ant를 통하거나 Eclipse같은 IDE에서 자동으로 해준다.

이클립스의 경우 Servers 라는 프로젝트가 웹 프로젝트와 별개로 생성이 된다. 여기에서 설정되는 서버의 세팅은 기본적으로 설치된 세팅과 별도로 운영된다. 즉 톰캣이 설치된 디렉토리의 conf 에 있는 설정과는 별개로 Servers하위의 서버별 server.xml 의 파일에 설정된 내용으로 동작이 된다는 뜻이다.
<%= request.getRealPath("/") %> 를 통해서 확인해 보면 이클립스에서 운영하는 디렉토리가 완전히 엉뚱한 곳에 존재함을 알 수 있다. 웹 프로젝트에서 파일을 변경하면 자동으로 파일이 해당 위치로 복사된다.


관련자료:
http://tomcat.apache.org/tomcat-4.1-doc/appdev/index.html 영문
http://www.apache-korea.org/tomcat/tomcat-4.1-doc/appdev/index.html 번역문

Posted by 케누 kenu허광남

댓글을 달아 주세요

  1. SGcom  댓글주소 수정/삭제 댓글쓰기 2008.01.21 17:34

    표준에 맞지 않지만 개발용 디렉토리를 자신의 환경에 맞게 수정할 수 있습니다.
    ^_^ㅋ

  2. 수아기  댓글주소 수정/삭제 댓글쓰기 2008.01.21 23:06

    음 잘 몰라서 뭐라고 말하긴 그렇지만 복잡해요.ㅠ.ㅠ

  3. 어딜털까  댓글주소 수정/삭제 댓글쓰기 2008.05.14 18:47

    슬쩍 털어갑니다

자바를 하다 보면 소스 날려먹고, class 파일만 갖고 서비스하는 곳도 있습니다.
이클립스에서는 class 파일만 있는 디렉토리도 참조할 수 있도록 되어있습니다.
디컴파일할 것이 아니라면 이런 클래스들은 jar로 압축해서 관리하는 것이 괜찮습니다.
예를 들어 cos.jar 가 압축이 풀린 상태로 있다면 다음과 같은 디렉토리 구조를 가질 것입니다. jar는 처음부터 없다고 가정하겠습니다.


사용자 삽입 이미지

주의할 점은 class의 루트는 com이 아니라 classes 폴더입니다. 패키지별로 폴더가 구성되는데, 최상위 패키지가 있는 폴더가 기준 위치입니다.
사용자 삽입 이미지

자바계열 프로젝트 속성에서 Java Build Path를 선택하면 나오는 화면입니다. Libraries 탭을 누르면 보입니다. 여기서 우측에 있는 Add Class Folder 버튼을 선택합니다.
사용자 삽입 이미지

클래스의 기준폴더를 선택합니다.

사용자 삽입 이미지

완료된 모습입니다.

좋은 하루 되십시오. ^^
Posted by 케누 kenu허광남

댓글을 달아 주세요

  1. 이동국  댓글주소 수정/삭제 댓글쓰기 2007.09.05 09:41

    이렇게 팁 형식으로 다 공개해버리면.. 책에 쓸 내용이 남아요..?? ㅎㅎ

  2. 김성안  댓글주소 수정/삭제 댓글쓰기 2007.09.05 11:11

    매일 매일 업데이트 되는 기능들 보는 재미가 쏠쏠하네요.

    최근에 발견한 편리한 기능이 Team Sync 퍼스펙티브에서 Compare 창에서 팝업메뉴가 다양하게 등장합니다. Show in -> History 기능도 추가되서 편리하더군요.

    3.2 사용할 때는 "이거 왜 이렇게 해놨더라?"하면서 히스토리 보려면 Java 퍼스펙티브가서 히스토리 펼치고 그런 짓 많이 했거든요. 제가 무식하게 사용한걸지도 ^^''

  3. SGcom  댓글주소 수정/삭제 댓글쓰기 2007.09.13 17:49

    정말 죄송하지만 딴지 걸어 보고 싶습니다.
    jar 로 관리하면 편하긴 합니다. 그러나 실행시에 눈에 띄게 느려져요.
    HP-UX에 웹로직으로 돌리니 그렇게 되더군요.
    그래서 그 프로젝트에서는 결국 전부다 풀어 버린 상태로 했던 적이 있습니다.

    클래스하나 바꾸면 전부 다바꿔야 한다는...

    테스트 버전일때는 풀어서 하고 릴리즈 버전일때는 묶는 것이 현명할 수 있겠죠

    • 케누 kenu허광남  댓글주소 수정/삭제 2007.09.13 17:59 신고

      jar 의 압축률을 조절할 수 있습니다. 직접 느린 경우는 당해보질 않았는데, jar파일의 크기나 그 안에 class 갯수에 따라서 성능차이를 체감할 수 있겠다는 생각이 듭니다. 변경이 잦은 클래스를 jar로 관리하는 것은 저도 아니라고 봅니다.
      의견 감사합니다.

    • 케누 kenu허광남  댓글주소 수정/삭제 2007.09.13 18:00 신고

      그리고 이런 것은 딴지라고 하기보다는 경험 공유입니다.
      덕분에 블로그 내용이 보강이 되었습니다.
      ^^ 행복하세요.