server.xml과 context.xml은 어떤 차이가 있을까?

filterMultipartResolver를 거치면서 lucy 필터가 적용되지 않아 web.xml에 multipartFilter를 추가하였으나, 이로 인해 첨부파일 업로드 시 500 에러가 발생하였다.
이를 해결하기 위해 server.xml 및 context.xml을 수정하였다.
server.xml은 서버의 실행 시점에 동작을 준비하는 xml 문서로, context-path 설정이 가능하다.
반면 context.xml은 웹 어플리케이션의 지원을 명시해주는 파일로, 웹을 읽어 실행하고 DB를 연결하는 기능을 수행한다.

 

 

 

✨시작하며

전자정부 프레임워크에서 프로젝트 수행 중 lucy-xss-servlet-filter를 사용해 XSS 취약점을 조치 하는데 filterMultipartResolver를 거치게 되면 lucy 필터가 적용되지 않아 web.xml에 multipartFilter를 추가했다.

서버에서 첨부파일을 업로드할 경우 500 에러가 발생해 Tomcat에서 xml을 수정했다.

server.xml 또는 context.xml을 수정하면 해결이 가능한 문제였는데, server와 context의 차이점이 무엇인지에 대해 알아보고자 작성하게 되었다.

 

 

 

server.xml

서버의 시작 시점에 읽어들여 동작을 준비하는 xml 문서 중 하나이다.

context-path 설정을 할 수 있고, 서버 실행 시 한 번만 실행된다.

서버에 대한 제어권이 없다면 정보를 변경하기 힘들기 때문에, 일정 Tomcat 버전 이후부터 context.xml 파일을 분리해 별도로 자원을 등록할 수 있도록 제공한다.

 

lucy filter와 multipartFilter로 인해 서버 구동 시 에러가 발생한다면, server.xml의 <Context .../>에 아래의 내용을 추가하면 된다.

allowCasualMultipartParsing="true"

 

 

 

context.xml

마찬가지로 서버의 시작 시점에 읽어들여 동작을 준비하는 xml 문서 중 하나이며, 웹 어플리케이션의 지원을 명시해주는 파일이다.

WatchedResource 태그에 명시된 경로에 따라 web.xml의 소스 코드를 읽는다.

여기서 conf/web.xml은 default 설정이며, WEB-INF/web.xmlOverride(재정의)하게 된다.

주로 Web을 읽어 실행시키고 DB를 연결하는 기능을 수행하며, 서버 실행 시 한 번만 실행된다.

서버 구동 시 context.xml의 파일을 찾고, 존재할 경우 server.xml 파일의 하위 노드로 추가해 구동한다.

 

lucy filter와 multipartFilter로 인해 서버 구동 시 에러가 발생한다면, context.xml의 <Context .../>에 아래의 내용을 추가하면 된다.

allowCasualMultipartParsing="true" path="/"

context.xml 적용 화면

현재 프로젝트를 테스트하던 중 에러가 발생했던 것으로, 운영서버와 개발서버의 Tomcat context.xml에 해당 코드를 추가하는 것으로 조치를 했다.

 

 

 

📜참고

'IT > Network' 카테고리의 다른 글

HTTP와 HTTPS는 대체 뭐가 다를까?  (0) 2023.11.03
GNS3의 설치와 기본 정보, 간단한 실습까지  (0) 2022.09.14