Infra
운영 반영 후 500 에러? 이너클래스 누락..
hammii
2025. 6. 22. 19:04
문제 상황
최근 운영 서버에 SI 프로젝트 코드를 반영한 뒤 화면 진입 시 아래와 같은 에러가 발생했다.
'페이지를 찾을 수 없습니다.'
500 Internal Server Error
테스트 할 때는 정상 작동 했는데, 운영 반영 후에만 오류가 발생했다.
이유는 바로 이너 클래스 누락이었다.
예시로 코드를 보여주자면
public class ViewerController {
public void method() {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
// 수행 작업
}
}, 1000);
}
}
Java 에서는 이너 클래스(내부 클래스), 특히 익명 이너 클래스를 사용할 경우 다음과 같은 .class 파일이 생성된다.
- ViewerController.class
- ViewerController$1.class
그런데 운영 서버에 반영할 때 ViewerController$1.class 를 누락하면,
애플리케이션은 해당 클래스를 로딩하지 못하고 500 에러를 발생시킨다.
ViewerController.class 는 기존에 운영 중이었던 파일이라 변경 파일이었고,
이너 클래스 사용으로 ViewerController$1.class 가 신규 파일이었는데
사내에서 사용하고 있는 형상관리 시스템에서는 신규 파일인 ViewerController$1.class 를 함께 보여주지 않았고 (검색했을 때 안 나왔나봄 ㅠ) 따로 신규등록을 해줘야했던 것이다..
이너 클래스는 Java 에서 흔히 사용하는 패턴이지만, 운영 환경이 자동화되지 않은 경우 치명적인 장애를 유발할 수 있다.
이번 경험을 통해 "보이지 않는 클래스"도 꼭 챙기는 습관을 갖게 되었다.