본문 바로가기

IOException2

ClientAbortException 시 HttpServletResponse 에서 .getOutputStream() 관리 이전 게시물에서 IOException이 발생하면 내가 원하는대로 json 응답을 해주고 싶었다. 파일 다운로드 try catch 시 자원 반납, exception 시 json 응답이번에 많은 테스트를 하며 기록해 두면 좋을 것 같은 내용이다. 상황은 다음과 같다.1. 파일 다운로드를 모두 void로 리턴한다.- 스트림으로 이미 내보내서 커밋 됐는데 또 json으로 리턴하려고so23go.tistory.com 하지만 ClientAbortException이 발생한 경우에 outputStream.close()하는 부분에서 에러가 발생한다. 이유가 뭔지 알아보니 서블릿에서 몇몇의 경우에 알아서 스트림을 정리한다고 한다. 스트림을 정리하는 건 다음의 경우 등이 있다. 응답이 클라이언트로 완전히 전송된 경우서블릿의 .. 2024. 12. 5.
파일 다운로드 try catch 시 자원 반납, exception 시 json 응답 이번에 많은 테스트를 하며 기록해 두면 좋을 것 같은 내용이다. 상황은 다음과 같다.1. 파일 다운로드를 모두 void로 리턴한다.- 스트림으로 이미 내보내서 커밋 됐는데 또 json으로 리턴하려고 하니 response has already been committed 에러가 나는 것으로 보임2. 파일 다운로드 중간에 IOException 이 발생한 경우 json으로 응답하려고 함 크게 이 두가지다.바로 코드로 들어가자public void fileDownload(){ // ... setDownloadResponseHeaders(...); OutputStream outputStream = response.getOutputStream(); try (FileInputStream fileInputStream = .. 2024. 12. 4.