두 개의 web.xml 비교해보자


안녕하세요.
고코더 입니다.



 1. 저번 블로그에 web-inf 아래 web.xml에 생성 방법을 글을 쓰니 두개의 xml에 대한 차이점을 물어보는 분이 계셔서 글을 남깁니다.


 2. 톰캣에 있는 web.xml 은 모든 프로젝트에 보통 기본설정(default)을 기록 합니다. 그리고 범용적인 프로젝트 설정을 기록하게 됩니다. 개발 파일을 공유할때 톰캣 파일을 함께 배포하기에 회사에서 혹은 큰 프로젝트에서 함께 써야 하는 꼭 필요한 기본설정을 기록 합니다. 범용적인 설정 위주로 기록합니다.

 3. web-inf 아래에 있는 web.xml은 해당 프로젝트에 대한 상세한(detail) 설정을 기록 합니다. 예를 들면 해당 프로젝트는 세션 타임아웃을 30초로 둔다면 여기에 기록합니다. 해당 사이트에서만 해야 하는 설정이기 때문입니다. 

모든 프로젝트에 적용할 범용설정은 config아래에 web.xml에 기록하고 
해당 프로젝트에만 사용할 기록은 web-inf 아래에 web.xml에 기록 합니다.

결론적으로 우선순위에 있는 xml은 톰캣에 있는 web-inf 입니다.
만약 같은 프로퍼티에 다른 내용이 있다면 web-inf에 있는 xml이 이를 오버라이드 합니다.

댓글로 첨언해주신 Terry 님에 자세하고 귀한 설명을 추가했습니다! 감사합니다. 언제나 부족한 설명있거나 잘못된게 있거나 궁금한게 있으면 댓글로 소통 합니다.


마무리


이런 자잘한 부분때메 자바가 복잡하죠.






댓글을 달아 주세요

  • Terry 2019.10.02 10:22  댓글주소  수정/삭제  댓글쓰기

    우연히 티스토리 글들을 보다가 이 글을 보게 되었는데요..보시는 분들이 오해의 소지가 있을것 같아서 첨언을 드립니다..
    2번에 언급했던 web.xml은 tomcat 디렉토리의 conf 디렉토리 밑에 있는 web.xml이 나오는 것인데요..
    이 web.xml의 역할은 기본설정..이란 말은 맞지만 해당 프로젝트만 그런게 아니라 모든 프로젝트에 적용되는 범용적인 설정을 여기다가 기록합니다..
    그리고 3번에 있는 web.xml은 WEB-INF 디렉토리가 있는 해당 프로젝트만 적용되는 설정을 여기에 적습니다..
    예를 들어서 세션 타임아웃을 설정하는 다음과 같은 항목이 web.xml에 있습니다..

    <session-config>
    <session-timeout>30</session-timeout>
    </session-config>

    만약 이 항목이 2번 web.xml에 30으로 적혀있고 3번 web.xml에 20으로 적혀 있음 3번것으로 적용이 됩니다..
    그러나 2번 web.xml에 30으로 적혀있는데 3번 web.xml에는 이 설정값이 아예 없다면 2번 것으로 적용됩니다..
    거꾸로 2번 web.xml에 이 설정값이 없는데 3번 web.xml에 이 설정값이 있다면 3번 것으로 적용은 됩니다만 다른 프로젝트에서는 해당 프로젝트의 WEB-INF 디렉토리에 있는 web.xml에 이 항목이 없다면 그 프로젝트는 오류가 나겠죠..

    정리하자면 모든 프로젝트에 적용할 설정값을 2번 web.xml에 기록하고 만약 특정 프로젝트에만 다른 값을 설정하는 방식으로 override 할 경우에는 3번 web.xml에 기록하게 됩니다..

    해당 프로젝트에 대한 기본 설정, 상세 설정 개념으로 설명하실 경우 오해의 소지가 있을것 같아 주제넘게 댓글을 달았습니다..

    • Favicon of https://gocoder.tistory.com 고코더 2019.10.02 10:41 신고  댓글주소  수정/삭제

      테리님 감사합니다
      설명이 조금 부족했었는데
      첨언해주셔서 추가로 내용에 기록하여 내용을 보강했습니다^^
      감사합니다!