SizeLimitExceededException 문제
- 작성자 :
- 김*현
- 작성일 :
- 2015-03-10 14:59:43
- 조회수 :
- 1,353
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
안녕하세요
org.springframework.web.multipart.commons.CommonsMultipartResolver 사용하여 파일 업로드 하고 있습니다.
maxUploadSize 프로퍼티를 사용하여 파일 용량을 컨트롤하고 있는데
SizeLimitExceededException 발생시 특정페이지로 보내는등에 핸들링이 안되고 있습니다.
기존 글을 찾아 보니 SimpleMappingExceptionResolver 클래스에 exceptionMappings프로퍼티를 활용하여 특정 페이지로
넘긴다고 나와있는데 그렇게 하여도 다른 Exception은 처리 되나 SizeLimitExceededException 만 처리되지 않고 서버가 죽어서
요청을 못받은거처럼 나옵니다.
SimpleMappingExceptionResolver 를 상속하여 resolveException 오버라이드 하여 ModelAndView 를 직접 생성하여
특정 jsp를 호출하여도 이것도 위처럼 서버가 아예 꺼져있는것처럼 작동 합니다.
답변 부탁 드립니다.
tocmat7 jdk1.7 egov3.1 사용중에 있습니다.
감사합니다.
org.springframework.web.multipart.commons.CommonsMultipartResolver 사용하여 파일 업로드 하고 있습니다.
maxUploadSize 프로퍼티를 사용하여 파일 용량을 컨트롤하고 있는데
SizeLimitExceededException 발생시 특정페이지로 보내는등에 핸들링이 안되고 있습니다.
기존 글을 찾아 보니 SimpleMappingExceptionResolver 클래스에 exceptionMappings프로퍼티를 활용하여 특정 페이지로
넘긴다고 나와있는데 그렇게 하여도 다른 Exception은 처리 되나 SizeLimitExceededException 만 처리되지 않고 서버가 죽어서
요청을 못받은거처럼 나옵니다.
SimpleMappingExceptionResolver 를 상속하여 resolveException 오버라이드 하여 ModelAndView 를 직접 생성하여
특정 jsp를 호출하여도 이것도 위처럼 서버가 아예 꺼져있는것처럼 작동 합니다.
답변 부탁 드립니다.
tocmat7 jdk1.7 egov3.1 사용중에 있습니다.
감사합니다.
A
안녕하세요.. 김대현님..
정확한 오류로그 첨부가 안되어서 올리신 글로만으로 판단해밨을때...
혹시.. 오류 로그 내용에... "Stream ended unexpectedly" 부분이 있는지 확인해보시기 바랍니다..
해당 부분이 존재할 경우... 어플리케이션 상의 문제는 아닌 것으로 판단됩니다.
네트워크상 전송 중에 Client나 Server 부분에서 연결을 끊는 경우 같습니다.
그리고...
우선 MultipartResolver 처리는 Controller 처리 이전에 호출되기 때문에...
일반적은 try .. catch로 위 Exception을 처리할 수 없습니다.
다만, DispatchServer에 전달된 Exception을 처리하기 위한 "ExceptionResolver"에
해당 Exception을 exceptionMappings에 추가하여 특정 오류 페이지로 넘어가는 것은 가능할 것 같습니다.
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="defaultErrorView" value="cmm/egovError"/>
<property name="exceptionMappings">
<props>
<prop key="org.springframework.dao.DataAccessException">cmm/dataAccessFailure</prop>
<prop key="org.springframework.transaction.TransactionException">cmm/dataAccessFailure</prop>
<prop key="egovframework.rte.fdl.cmmn.exception.EgovBizException">cmm/egovBizException</prop>
<prop key="org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException">cmm/SizeLime</prop>
</props>
</property>
</bean>
또는
HandlerExceptionResolver를 활용하실 수 있습니다.
해당 Controller class가 HandlerExceptionResolver를 implements 하도록 하시고..
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception exception) 메소드를 구현하시면 됩니다.
그럼.. 즐거운 하루되십시오.
감사합니다.
정확한 오류로그 첨부가 안되어서 올리신 글로만으로 판단해밨을때...
혹시.. 오류 로그 내용에... "Stream ended unexpectedly" 부분이 있는지 확인해보시기 바랍니다..
해당 부분이 존재할 경우... 어플리케이션 상의 문제는 아닌 것으로 판단됩니다.
네트워크상 전송 중에 Client나 Server 부분에서 연결을 끊는 경우 같습니다.
그리고...
우선 MultipartResolver 처리는 Controller 처리 이전에 호출되기 때문에...
일반적은 try .. catch로 위 Exception을 처리할 수 없습니다.
다만, DispatchServer에 전달된 Exception을 처리하기 위한 "ExceptionResolver"에
해당 Exception을 exceptionMappings에 추가하여 특정 오류 페이지로 넘어가는 것은 가능할 것 같습니다.
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="defaultErrorView" value="cmm/egovError"/>
<property name="exceptionMappings">
<props>
<prop key="org.springframework.dao.DataAccessException">cmm/dataAccessFailure</prop>
<prop key="org.springframework.transaction.TransactionException">cmm/dataAccessFailure</prop>
<prop key="egovframework.rte.fdl.cmmn.exception.EgovBizException">cmm/egovBizException</prop>
<prop key="org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException">cmm/SizeLime</prop>
</props>
</property>
</bean>
또는
HandlerExceptionResolver를 활용하실 수 있습니다.
해당 Controller class가 HandlerExceptionResolver를 implements 하도록 하시고..
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception exception) 메소드를 구현하시면 됩니다.
그럼.. 즐거운 하루되십시오.
감사합니다.