MaxUploadSizeExceededException 예외 처리 방식에 대한 기술문의
- 작성자 :
- 이*
- 작성일 :
- 2022-11-10 14:44:47
- 조회수 :
- 809
- 구분 :
- 개발환경 / 3.6
- 진행상태 :
- 완료
Q
안녕하세요, 전자정부 프레임워크 3.6.0 버전을 사용하여 개발 중
첨부파일 업로드 시 환경설정상의 용량 제한 초과 시 예외 발생에 대한 처리를 구현중에 있습니다.
우선 MultipartResolver Bean 설정에 첨부파일 용량을 100MB로 제한하였으며
그보다 큰 용량의 파일을 업로드 해봄으로써 예외 확인 테스트를 진행했습니다.
그 결과 MaxUploadSizeExceededException 예외가 발생하는 것을 확인하였고
비동기 POST 방식으로 데이터 등록/수정(multipart-formdata) 요청을 처리하는 컨트롤러에서
@ExceptionHandler라는 어노테이션을 이용한 예외 핸들러를 선언하였으나, 동일한 예외 발생 시 해당 핸들러가 동작하지 않는 상황입니다.
원하는 동작은 현재 jQuery AJAX 기능을 사용하여 비동기 방식의 POST 요청 처리를 진행중에 있으므로
요청 처리 실패 시 Javascript 기반 에러 메시지(Alert)를 고객에게 안내하기 위한 목적으로 띄우려고 합니다.
다만, WAS상에는 MaxUploadSizeExceededException 예외에 대한 로그가 출력되나
위에서 선언한 예외 핸들러가 동작하지 않는지 고민해보았고, 마침 Servlet 설정 파일에
SimpleMappingExceptionResolver Bean을 설정한 것이 생각나 해당 리졸버보다
어노테이션 기반의 예외 처리 리졸버가 우선순위를 갖도록 설정을 변경해 보았습니다.
그럼에도 동일한 상황인데요.
예상으로는 요청이 Controller까지 전달되지 전에 예외를 발생시킨다면 그럴수도 있다고 생각이 드는데요.
만약, 위 내용이 맞다면 원하는 동작이 이루어지기 위해서는 어떤 처리를 해야하는지 첨언 부탁드리겠습니다.
관련 레퍼런스도 있다면 같이 공유 부탁드립니다.
감사합니다.
첨부파일 업로드 시 환경설정상의 용량 제한 초과 시 예외 발생에 대한 처리를 구현중에 있습니다.
우선 MultipartResolver Bean 설정에 첨부파일 용량을 100MB로 제한하였으며
그보다 큰 용량의 파일을 업로드 해봄으로써 예외 확인 테스트를 진행했습니다.
그 결과 MaxUploadSizeExceededException 예외가 발생하는 것을 확인하였고
비동기 POST 방식으로 데이터 등록/수정(multipart-formdata) 요청을 처리하는 컨트롤러에서
@ExceptionHandler라는 어노테이션을 이용한 예외 핸들러를 선언하였으나, 동일한 예외 발생 시 해당 핸들러가 동작하지 않는 상황입니다.
원하는 동작은 현재 jQuery AJAX 기능을 사용하여 비동기 방식의 POST 요청 처리를 진행중에 있으므로
요청 처리 실패 시 Javascript 기반 에러 메시지(Alert)를 고객에게 안내하기 위한 목적으로 띄우려고 합니다.
다만, WAS상에는 MaxUploadSizeExceededException 예외에 대한 로그가 출력되나
위에서 선언한 예외 핸들러가 동작하지 않는지 고민해보았고, 마침 Servlet 설정 파일에
SimpleMappingExceptionResolver Bean을 설정한 것이 생각나 해당 리졸버보다
어노테이션 기반의 예외 처리 리졸버가 우선순위를 갖도록 설정을 변경해 보았습니다.
그럼에도 동일한 상황인데요.
예상으로는 요청이 Controller까지 전달되지 전에 예외를 발생시킨다면 그럴수도 있다고 생각이 드는데요.
만약, 위 내용이 맞다면 원하는 동작이 이루어지기 위해서는 어떤 처리를 해야하는지 첨언 부탁드리겠습니다.
관련 레퍼런스도 있다면 같이 공유 부탁드립니다.
감사합니다.
환경정보
-
- OS 정보 : 로컬-MacOS / 개발 - CentOS / 운영 - CentOS
- 표준프레임워크 버전 : 3.6.0
- JDK(JRE) 정보 : OpenJDK 8
- WAS 정보 : Tomcat 7.0.105
- DB 정보 : MariaDB 10.4.17
- 기타 환경 정보 : -
A
안녕하세요.
표준프레임워크센터입니다.
Multipart 파일 전송시
SpringMutipartFilter가 걸려 있는경우
MaxUploadSizeExceededException의 예외처리에 문제가 발생할수 있습니다.
이경우 지정한 SimpleMappingExceptionResolver로 처리되지 않고
web.xml에 지정된 에러페이지로 바로 이동하는 증상이 생길수 있습니다.
SpringMutipartFilter를 제거 하면 해결이 가능하나
Multipart 파일 전송시 Filter 처리에 문제가 생길수 있어 권장 하지 않습니다.
web.xml에서
지정된 error.jsp에서 다음과 같이 분기 처리는 가능할듯 합니다.
<%@ page isErrorPage="true" %>
<%
if ( "org.springframework.web.multipart.MaxUploadSizeExceededException".equals(exception.getClass().getName()) ) {
pageContext.forward("/errorMaxUploadSizeExceededException.jsp");
}
%>
감사합니다.
표준프레임워크센터입니다.
Multipart 파일 전송시
SpringMutipartFilter가 걸려 있는경우
MaxUploadSizeExceededException의 예외처리에 문제가 발생할수 있습니다.
이경우 지정한 SimpleMappingExceptionResolver로 처리되지 않고
web.xml에 지정된 에러페이지로 바로 이동하는 증상이 생길수 있습니다.
SpringMutipartFilter를 제거 하면 해결이 가능하나
Multipart 파일 전송시 Filter 처리에 문제가 생길수 있어 권장 하지 않습니다.
web.xml에서
지정된 error.jsp에서 다음과 같이 분기 처리는 가능할듯 합니다.
<%@ page isErrorPage="true" %>
<%
if ( "org.springframework.web.multipart.MaxUploadSizeExceededException".equals(exception.getClass().getName()) ) {
pageContext.forward("/errorMaxUploadSizeExceededException.jsp");
}
%>
감사합니다.