Java, Spring Boot, Tomcat 환경에서 파일 업로드 기능을 구현하면서 겪었던 임시 파일 삭제 문제에 대해 공유하고자 합니다. 특히, File.deleteOnExit() 메소드를 사용했을 때의 한계와 이를 해결하기 위해 Files.delete() 메소드로 전환한 경험을 공유합니다. 문제의 배경 파일 업로드 기능을 구현할 때, 사용자가 업로드한 파일은 일반적으로 서버의 임시 디렉토리에 저장됩니다. Tomcat은 요청이 완료되면 자동으로 이 임시 파일들을 삭제하는 기능을 제공하지만, 비동기 처리나 지속적인 파일 업로드가 이루어지는 환경에서는 이 기능이 제대로 작동하지 않을 수 있습니다. 이로 인해 임시 파일이 쌓여 서버의 디스크 공간을 차지하게 되는 문제가 발생했습니다. File.deleteO..
1. 개요 로컬 환경은 Spring Framework와 Tomcat 서버를 기반으로 개발되어 있었으며, 파일 업로드 기능은 MultipartFile을 활용하여 구현되어 있었다. 프로젝트의 서버 환경의 경우 WAS(Web Application Server)를 Tomcat이 아닌 Resin을 사용하는 것을 뒤늦게 확인하였고 이 과정에서 파일 업로드 기능에 문제가 발생하였다. 2. 문제 상황 Resin 서버로 이관 후, 클라이언트에서 전송한 파일이 서버에서 MultipartFile 객체로 정상적으로 매핑되지 않거나, transferTo() 호출 시 내부적으로 발생하는 권한/호환성 오류로 인해 업로드가 실패하였다. 대표적인 예외 메시지는 다음과 같았다. java.lang.NullPointerException :..
발단 Windows10 개인 로컬 환경에서 WSL2를 활용하여 docker를 실행하여 apahch와 tomcat을 연동하는 중 발생한 문제 docker에서 apache 컨테이너와 tomcat 컨테이너를 실행하였고 각각 호출 시에는 정상적으로 호출되었음 http://localhost 호출 http://localhost:8080 호출 그러나 Web 서버와 Was의 처리를 분리하 mod_jk와 ajp 프로토콜을 적용하였을 때 문제가 발생하였음. ajp 적용 후 http://localhost 호출 시 에러 화면 원인 mod_jk.log를 확인하였을 때 WEB에서 WAS로 AJP통신을 요청할 떄 해당 ip와 port로 연결을 실패하였다는 것임. 에러 메시지 [info] ajp_service::jk_ajp_comm..
- Total
- Today
- Yesterday
- Windows
- gradle
- vscode
- spring
- 프로그래밍
- SpringBoot
- html
- Git
- HTTPS
- Push
- Linux
- jQuery
- docker
- 깨짐
- Java
- parse
- web
- Eclipse
- 컨테이너
- Oracle
- TLS
- JPA
- JSON
- React
- WAS
- mybatis
- SQL
- tomcat
- SSL
- 날짜
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
