http://13.209.74.188:8080/BugSandwichOrnamentMall/mainPage.do
문제 상황
EC2에 Tomcat을 설치하고 WAR 파일을 배포했는데, 분명히 배포는 됐는데 접속만 하면 404 에러가 계속 발생했다.
- WAR 정상 배포됨 (/webapps/BugSandwichOrnamentMall 존재)
- 컨트롤러 클래스 존재 (FrontController.class 확인)
- 그런데 모든 URL이 404
http://서버IP:8080/BugSandwichOrnamentMall/mainPage.do
이 상태가 하루 종일 지속됐다
1단계: 배포 자체는 정상인가?
ls /usr/local/tomcat/webapps/
→ WAR가 정상적으로 풀려 있었고
find /usr/local/tomcat/webapps/BugSandwichOrnamentMall/WEB-INF/classes -name "*FrontController*"
→ 핵심 컨트롤러 클래스도 정상적으로 존재했다.
즉, 배포 문제는 아님.
2단계: 로그 확인
ls /usr/local/tomcat/logs/
문제는 localhost.log, catalina.log 쪽에 애플리케이션 초기화 실패 로그가 있다는 점이었다.
핵심은 Listener 쪽에서 애플리케이션이 시작조차 못 하고 죽고 있다는 것.
💣 진짜 원인: Java 버전 불일치
서버 Java 버전을 확인했다.
java -version
openjdk version "17.0.17"
그런데 WAR 파일은 Java 21로 컴파일된 상태였다.
무슨 일이 벌어졌나?
▪️InitListener가 가장 먼저 로딩됨
▪️ Java 21 bytecode → Java 17 JVM에서 실행 불가
▪️ Listener 초기화 실패
▪️ 컨텍스트 로딩 실패
▪️ 결과: WAR는 있는데 전부 404
이게 제일 무서운 포인트다. 에러가 나는데 화면에서는 그냥 404만 나온다.
✅ 해결 방법
방법 1️⃣ (추천): 서버 Java를 21로 업그레이드
sudo dnf install java-21-amazon-corretto -y
sudo alternatives --config java
java -version
Tomcat이 사용하는 Java도 확인:
ps -ef | grep tomcat
필요하다면:
vi /usr/local/tomcat/bin/setenv.sh
export JAVA_HOME=/usr/lib/jvm/java-21-amazon-corretto
Tomcat 재시작:
shutdown.sh
startup.sh
👉 바로 정상 동작
방법 2️⃣: WAR를 Java 17로 다시 빌드
- IDE Project SDK: 17
- Compiler target: 17
- WAR 재생성 후 재배포
서버 환경을 못 바꿀 때만 선택하는 방법.
배운 점
- 404 ≠ 컨트롤러 문제
- Listener 에러는 전체 앱을 죽인다
- WAR 배포 시 서버 Java 버전 = 빌드 Java 버전 필수 확인
- 로그 안 보면 절대 못 찾는 문제
'🍏 개발일기' 카테고리의 다른 글
| MySQL Workbench : 워크벤치 사용해보기 (0) | 2026.01.30 |
|---|---|
| Oracle Cloud DB 연결 (0) | 2026.01.28 |
| 반복 코드 : Lombok과 JdbcTemplate으로 간결하게 (0) | 2026.01.26 |
| 내 PC에서 배포 (1) | 2026.01.25 |
| AWS RDS 사용 (0) | 2026.01.25 |