웹 애플리케이션을 운영하다 보면 WAR 파일을 수정해야 할 일이 생기곤 합니다. 특히, DB 연결 정보가 담긴 property 파일을 바꾸고 싶지만, 빌드 환경이 없거나 재배포가 어려운 경우 곤란할 수 있죠.
이 글에서는 WAR 파일을 다시 빌드하지 않고 내부 property 파일의 DB 설정만 안전하게 변경하는 방법을 단계별로 설명합니다. 제우스(Jeus) 서버를 기준으로 설명하지만, 다른 WAS 환경에서도 원리는 유사하게 적용됩니다.
1. WAR 파일 구조 이해하기
WAR(Web Application Archive) 파일은 일종의 ZIP 압축 파일입니다. WEB-INF/classes 아래에 위치한 *.properties 파일이 DB 설정 정보를 담고 있는 경우가 많습니다.
2. WAR 파일을 수정하는 기본 방법
📌 단계별 가이드
# 1. 임시 디렉토리 생성 후 WAR 압축 해제
mkdir temp_war
cd temp_war
unzip ../yourapp.war
# 2. property 파일 수정
vi WEB-INF/classes/db.properties
# 3. 다시 WAR로 압축
zip -r ../yourapp_modified.war .
수정한 WAR 파일을 다시 제우스에 배포하면 DB 설정이 반영됩니다.
3. 빌드 없는 다른 방법은 없을까?
✅ 외부 설정 파일 사용하는 경우
애플리케이션이 외부 property 파일이나 환경 변수, 시스템 프로퍼티를 참조하도록 설계되어 있다면, 단순히 환경 설정만 바꾸면 됩니다.
java -Ddb.url=jdbc:mysql://new-host/db -jar yourapp.war
✅ JNDI를 사용하는 경우 (제우스 추천 방식)
WAR 파일의 web.xml에서 DB를 JNDI 리소스로 참조한다면, 제우스 관리 콘솔에서 해당 JNDI 자원의 DB 설정만 바꾸면 됩니다.
<resource-ref> <res-ref-name>jdbc/MyDB</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>
4. 마무리: 어떤 방식이 내 상황에 맞을까?
방법 | 조건 | 특징 |
WAR 압축 해제 후 수정 | 직접 수정 가능할 때 | 가장 단순, 위험도 있음 |
외부 설정 참조 | 코드가 외부 설정을 읽도록 설계되어 있을 때 | 안전하고 유지보수 쉬움 |
JNDI 설정 변경 | Jeus에서 JNDI 사용 중일 때 | WAS에서 설정만 바꾸면 됨 |
✅ 결론
WAR 파일을 다시 빌드할 수 없는 상황에서도 DB 연결 정보를 수정할 수 있는 방법은 다양합니다. 현재 애플리케이션이 어떤 구조인지 확인한 후, 가장 안전하고 간편한 방법을 선택해 보세요.