FileCopyUtils.copy 실행 중 IOException이 발생합니다.
- 작성자 :
- 정*
- 작성일 :
- 2020-03-05 01:31:29
- 조회수 :
- 3,396
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
안녕하세요 전자정부 프레임워크를 사용해서 공공사이트를 개발/운영 중입니다.
최근에 EgovFileDownloadController.java를 사용해서 800MB 파일을 다운로드 하려고 하는데
cvplFileDownload() 메소드에서 Exception이 발생해서 문의 드립니다.
파일다운로드 소스를 수정하지 않고 게시판에 첨부파일로 파일을 등록한 상태인데 다운로드가 되지 않고 오류가 나서 확인해보니
아래 부분의 step9와 step10 사이의 FileCopyUtils.copy()가 수행되다가 이렇게 오류가 나면서 파일 다운로드가 되지 않고 있습니다.
여기저기 많이 찾아봤는데 정확한 원인을 찾지 못해 문의 드립니다.
context-common.xml파일의 maxUpladSize와 maxInMemorySize는 충분히 큰 숫자인 1000000000로 수정해놓은 상태입니다.
[로그내용]===================================================================================
2020-03-05 01:07:56,233 INFO [egovframework.com.cmm.web.EgovFileDownloadController] request step9
2020-03-05 01:08:56,798 DEBUG [egovframework.com.cmm.web.EgovFileDownloadController] IGNORED: java.io.IOException: 현재 연결은 원격 호스트에 의해 강제로 끊겼습니다
2020-03-05 01:08:56,798 INFO [egovframework.com.cmm.web.EgovFileDownloadController] request step12
===========================================================================================
[EgovFileDownloadController.java 로깅 추가]============================================================
try {
in = new BufferedInputStream(new FileInputStream(uFile));
out = new BufferedOutputStream(response.getOutputStream());
LOGGER.info("request step9");
FileCopyUtils.copy(in, out);
LOGGER.info("request step10");
out.flush();
LOGGER.info("request step11");
} catch (Exception ex) {
LOGGER.debug("IGNORED: {}", ex.getMessage());
LOGGER.info("request step12");
......
===========================================================================================
최근에 EgovFileDownloadController.java를 사용해서 800MB 파일을 다운로드 하려고 하는데
cvplFileDownload() 메소드에서 Exception이 발생해서 문의 드립니다.
파일다운로드 소스를 수정하지 않고 게시판에 첨부파일로 파일을 등록한 상태인데 다운로드가 되지 않고 오류가 나서 확인해보니
아래 부분의 step9와 step10 사이의 FileCopyUtils.copy()가 수행되다가 이렇게 오류가 나면서 파일 다운로드가 되지 않고 있습니다.
여기저기 많이 찾아봤는데 정확한 원인을 찾지 못해 문의 드립니다.
context-common.xml파일의 maxUpladSize와 maxInMemorySize는 충분히 큰 숫자인 1000000000로 수정해놓은 상태입니다.
[로그내용]===================================================================================
2020-03-05 01:07:56,233 INFO [egovframework.com.cmm.web.EgovFileDownloadController] request step9
2020-03-05 01:08:56,798 DEBUG [egovframework.com.cmm.web.EgovFileDownloadController] IGNORED: java.io.IOException: 현재 연결은 원격 호스트에 의해 강제로 끊겼습니다
2020-03-05 01:08:56,798 INFO [egovframework.com.cmm.web.EgovFileDownloadController] request step12
===========================================================================================
[EgovFileDownloadController.java 로깅 추가]============================================================
try {
in = new BufferedInputStream(new FileInputStream(uFile));
out = new BufferedOutputStream(response.getOutputStream());
LOGGER.info("request step9");
FileCopyUtils.copy(in, out);
LOGGER.info("request step10");
out.flush();
LOGGER.info("request step11");
} catch (Exception ex) {
LOGGER.debug("IGNORED: {}", ex.getMessage());
LOGGER.info("request step12");
......
===========================================================================================
A
안녕하세요.
표준프레임워크센터 입니다.
대용량 파일을 등록시
기재하신 빈설정이나 속성을 설정하는부분은
맞는듯 합니다.
다만, 운영하시는 사이트에 따라
WAS 설정이나 웹방화벽에서도 추가로 허용해야 하는
부분이 있을수 있습니다.
예를들어
Tomcat WAS의 경우 server.xml 설정파일이 존재하고
다음 설정에서 connectionTimeout 부분을 조정해 주셔야 합니다.
<Connector connectionTimeout="40000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
인터넷 라인이 느린경우 더 많은 지연시간이 필요할수도 있습니다.
감사합니다.
표준프레임워크센터 입니다.
대용량 파일을 등록시
기재하신 빈설정이나 속성을 설정하는부분은
맞는듯 합니다.
다만, 운영하시는 사이트에 따라
WAS 설정이나 웹방화벽에서도 추가로 허용해야 하는
부분이 있을수 있습니다.
예를들어
Tomcat WAS의 경우 server.xml 설정파일이 존재하고
다음 설정에서 connectionTimeout 부분을 조정해 주셔야 합니다.
<Connector connectionTimeout="40000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
인터넷 라인이 느린경우 더 많은 지연시간이 필요할수도 있습니다.
감사합니다.