본문 바로가기
홍TV 홍TV

Tomcat 설정이 안 먹는다면? “setenv.bat”만 보면 안 되는 이유

홍TV 읽는 시간 약 13분
4.5
(300)

들어가며

Tomcat에 JVM 옵션이나 외부 설정 파일 경로를 추가했는데 이상하게 적용되지 않는 경우가 있습니다.

분명히 setenv.bat에 설정을 넣었고 파일 내용도 틀린 것 같지 않은데, 애플리케이션에서는 해당 설정을 찾지 못합니다.

이럴 때 무조건 setenv.bat부터 다시 수정하기보다는 현재 Tomcat을 어떤 방식으로 실행하고 있는지 먼저 확인해야 합니다.

같은 Tomcat이라도 실행 방법에 따라 JVM을 띄우는 과정이 달라지기 때문입니다.

대표적으로 Windows 환경에서 Tomcat을 실행하는 방법은 크게 세 가지로 나눠볼 수 있습니다.

  • startup.bat으로 직접 실행
  • Windows 서비스로 실행
  • Eclipse에서 실행

그리고 중요한 점은 세 가지 방법이 모두 같은 설정을 읽는 것은 아니라는 것입니다.

이번 글에서는 외부 설정 파일을 지정하는 상황을 예로 들어 각각 어디에 설정해야 하는지 정리해보겠습니다.

1. startup.bat으로 Tomcat을 실행하는 경우

먼저 가장 일반적인 방법입니다.

Tomcat 설치 폴더의 bin 디렉터리에서 startup.bat을 실행해서 서버를 띄우는 방식입니다.

예를 들어 다음과 같은 구조라고 가정해보겠습니다.

apache-tomcat
 └─ bin
     ├─ startup.bat
     ├─ shutdown.bat
     ├─ catalina.bat
     └─ setenv.bat

이 방식으로 Tomcat을 실행한다면 setenv.bat를 이용해 JVM 옵션을 설정할 수 있습니다.

예를 들어 애플리케이션에서 외부 설정 파일을 사용하도록 다음과 같은 시스템 프로퍼티를 전달한다고 해보겠습니다.

-Dxxx.config=C:\config\config.properties

setenv.bat에는 다음과 같이 설정할 수 있습니다.

set "CATALINA_OPTS=%CATALINA_OPTS% -Dxxx.config=C:\config\config.properties"

그리고 startup.bat을 이용해 Tomcat을 다시 실행합니다.

이 경우에는 setenv.bat에 설정한 JVM 옵션이 Tomcat 실행 과정에 전달됩니다.

따라서 startup.bat으로 직접 Tomcat을 실행하고 있다면 setenv.bat부터 확인하는 것이 맞습니다.

2. 그런데 Windows 서비스로 실행하고 있다면?

여기서부터 조금 헷갈리기 시작합니다.

Windows 서비스에 Tomcat을 등록해서 사용하고 있다면 이야기가 달라집니다.

작업 관리자나 Windows 서비스 관리 화면에서 Tomcat 서비스가 실행되고 있다면, 단순히 startup.bat을 실행하는 것과는 다른 방식으로 Tomcat이 시작됩니다.

이 경우 setenv.bat에 설정을 추가했는데도 적용되지 않는 상황이 발생할 수 있습니다.

왜냐하면 Windows 서비스로 등록된 Tomcat은 일반적인 배치 파일 실행 방식과 JVM을 시작하는 경로가 다르기 때문입니다.

따라서 서비스로 등록된 Tomcat의 경우에는 setenv.bat만 수정하고 계속 테스트하기보다는 Tomcat 서비스의 JVM 설정을 직접 확인하는 것이 중요합니다.

Tomcat 설치 폴더의 bin 디렉터리를 보면 다음과 비슷한 실행 파일이 있습니다.

Tomcat11w.exe

Tomcat 버전에 따라 파일명이 다를 수 있습니다.

이 파일을 실행하면 Tomcat 서비스 설정을 확인할 수 있는 화면이 나타납니다.

여기서 Java 탭으로 이동하면 JVM과 관련된 설정을 확인할 수 있습니다.

예를 들어 외부 설정 파일을 지정해야 한다면 Java Options에 다음과 같은 항목을 추가할 수 있습니다.

-Dxxx.config=C:\config\config.properties

그리고 설정을 저장한 다음 Tomcat 서비스를 재시작해야 합니다.

중요한 것은 setenv.bat에 설정했다고 끝나는 것이 아니라, 실제 Tomcat을 어떤 방식으로 실행하고 있는지를 확인하는 것입니다.

3. Eclipse에서 Tomcat을 실행하는 경우

개발할 때는 Eclipse에서 Tomcat을 실행하는 경우도 많습니다.

이 경우 역시 setenv.bat에 설정을 넣었다고 해서 무조건 적용되는 것은 아닙니다.

Eclipse가 자체적인 실행 설정을 이용해 JVM을 실행하기 때문입니다.

Eclipse의 Servers 뷰에서 현재 사용하고 있는 Tomcat 서버를 더블클릭합니다.

그러면 서버 설정 화면을 확인할 수 있습니다.

여기에서 Open launch configuration을 선택합니다.

그리고 Arguments 탭으로 이동합니다.

여기에 VM arguments 항목이 있습니다.

외부 설정 파일을 지정하려는 경우 다음과 같은 옵션을 추가할 수 있습니다.

-Dxxx.config=C:\config\config.properties

즉 Eclipse에서 실행하는 경우에는 setenv.bat을 계속 수정하기보다는 Eclipse의 Tomcat 실행 설정에 JVM 옵션을 넣어야 합니다.

4. 결국 중요한 것은 Tomcat 실행 방식

지금까지의 내용을 표로 정리하면 이해하기 쉽습니다.

Tomcat 실행 방법설정 위치
startup.bat 직접 실행bin\setenv.bat
Windows 서비스Tomcat*w.exe → Java → Java Options
Eclipse에서 실행Servers → Open launch configuration → Arguments → VM arguments

같은 -Dxxx.config 옵션을 넣더라도 Tomcat을 어떻게 실행하느냐에 따라 넣어야 할 위치가 달라집니다.

이 부분을 모르고 있다면 setenv.bat에 아무리 설정을 추가해도 계속 적용되지 않는 것처럼 보일 수 있습니다.

그래서 설정 문제를 확인할 때는 가장 먼저 다음 질문을 해보는 것이 좋습니다.

“지금 이 Tomcat은 누가 JVM을 띄우고 있는가?”

배치 파일인지, Windows 서비스인지, Eclipse인지부터 확인하면 문제의 상당 부분을 빠르게 좁힐 수 있습니다.

5. 설정을 넣은 뒤에는 로그를 확인하자

JVM 옵션을 추가했다면 실제로 설정이 적용됐는지 확인해야 합니다.

가장 확실한 방법 중 하나는 애플리케이션의 기동 로그를 확인하는 것입니다.

예를 들어 서버가 시작될 때 다음과 같은 로그가 출력되도록 만들어두었다고 가정해보겠습니다.

[PUSH-INIT] 서버 푸시 활성화됨

이 메시지가 정상적으로 출력된다면 외부 설정을 읽고 서버 푸시 기능이 정상적으로 활성화됐다는 것을 확인할 수 있습니다.

반대로 다음과 같이 비활성화 상태가 출력된다면 설정을 다시 확인해야 합니다.

[PUSH-INIT] 서버 푸시 비활성화

이 경우에는 단순히 Java 옵션을 잘못 넣은 것인지, 외부 설정 파일 경로가 잘못된 것인지, 또는 설정값 자체가 비어 있는 것인지 확인할 필요가 있습니다.

6. Windows 경로 오타를 특히 조심해야 하는 이유

외부 설정 파일을 지정할 때 가장 흔하게 발생하는 문제 중 하나가 경로 오타입니다.

예를 들어 실제 파일이 다음 위치에 있다고 해보겠습니다.

C:\config\config.properties

그런데 JVM 옵션에 다음처럼 잘못 입력했다면 문제가 발생할 수 있습니다.

파일 이름이 다릅니다.

또는 다음과 같이 디렉터리 자체가 잘못될 수도 있습니다.

이런 문제는 생각보다 찾기가 어렵습니다.

특히 애플리케이션의 기본 설정 파일이 별도로 존재하는 경우에는 더 그렇습니다.

예를 들어 프로젝트 내부에 다음과 같은 기본 설정 파일이 있다고 해보겠습니다.

WEB-INF
 └─ config.properties

외부 설정 파일을 지정했지만 실제 외부 파일 경로가 틀렸더라도 애플리케이션이 내부의 WEB-INF/config.properties를 기본값으로 사용할 수 있습니다.

그러면 Tomcat 자체는 정상적으로 기동됩니다.

화면에서도 특별한 오류가 나타나지 않을 수 있습니다.

하지만 내가 의도했던 외부 설정 파일은 실제로 사용되지 않고 있는 상황이 됩니다.

이런 경우에는 단순히 “서버가 정상적으로 올라왔으니 설정도 정상이다”라고 판단하면 안 됩니다.

7. 기동 로그가 중요한 이유

그래서 설정 변경 후에는 단순히 Tomcat이 정상적으로 실행됐는지만 확인하는 것보다 애플리케이션의 기동 로그를 확인하는 것이 좋습니다.

예를 들어 다음과 같은 로그가 있다면 상당히 유용합니다.

[PUSH-INIT] config path = C:\config\config.properties
[PUSH-INIT] 서버 푸시 활성화됨

이렇게 하면 단순히 기능이 켜졌는지만 확인하는 것이 아니라 실제로 어떤 경로의 설정 파일을 사용했는지도 확인할 수 있습니다.

반대로 다음과 같이 출력된다면 설정이 정상적으로 적용되지 않았을 가능성을 확인해야 합니다.

[PUSH-INIT] 서버 푸시 비활성화

특히 외부 설정 파일을 사용하는 구조에서는 실제로 어떤 설정 파일을 읽었는지 로그에 남기는 방식도 도움이 됩니다.

8. setenv.bat이 안 먹을 때 체크할 것

Tomcat 설정이 적용되지 않는다면 다음 순서로 확인해보는 것을 추천합니다.

첫 번째, Tomcat 실행 방법 확인

먼저 Tomcat을 어떻게 실행하고 있는지 확인합니다.

startup.bat인지 Windows 서비스인지 Eclipse인지에 따라 설정 위치가 달라집니다.

두 번째, JVM 옵션 확인

다음과 같은 옵션이 실제 실행 환경에 들어갔는지 확인합니다.

-Dxxx.config=C:\config\config.properties

세 번째, 외부 파일 경로 확인

Windows 파일 탐색기에서 실제로 해당 파일이 존재하는지 확인합니다.

C:\config\config.properties

경로와 파일명을 한 글자씩 확인하는 것이 좋습니다.

네 번째, 서비스 또는 Eclipse 설정 확인

Windows 서비스라면 Tomcat*w.exe의 Java Options를 확인합니다.

Eclipse라면 Launch Configuration의 VM arguments를 확인합니다.

다섯 번째, Tomcat 재시작

설정을 변경했다면 기존에 실행되어 있던 Tomcat을 그대로 두지 말고 확실하게 재시작합니다.

특히 Windows 서비스 환경에서는 서비스 재시작 여부를 반드시 확인해야 합니다.

여섯 번째, 기동 로그 확인

마지막으로 [PUSH-INIT]와 같은 초기화 로그를 확인합니다.

이 단계가 실제 적용 여부를 판단하는 데 가장 중요합니다.

마무리

Tomcat의 JVM 옵션이 적용되지 않을 때 흔히 하는 실수가 있습니다.

바로 setenv.bat만 계속 수정하는 것입니다.

하지만 실제 문제는 setenv.bat의 내용이 아니라 Tomcat을 실행하는 방식 자체가 다른 것일 수 있습니다.

정리하면 다음과 같습니다.

startup.bat
   ↓
setenv.bat
   ↓
CATALINA_OPTS
   ↓
JVM 옵션

Windows 서비스라면 다음과 같습니다.

Windows Service
   ↓
Tomcat*w.exe
   ↓
Java Options
   ↓
JVM 옵션

Eclipse라면 다음과 같습니다.

Eclipse
   ↓
Servers
   ↓
Open launch configuration
   ↓
Arguments
   ↓
VM arguments
   ↓
JVM 옵션

결국 -Dxxx.config=C:\config\config.properties 같은 설정을 추가할 때 중요한 것은 무엇을 입력하느냐만큼 어디에 입력하느냐입니다.

그리고 설정을 적용한 후에는 Tomcat이 정상적으로 실행됐다는 사실만 확인하지 말고, 실제 애플리케이션의 기동 로그까지 확인하는 것이 좋습니다.

특히 외부 설정 파일을 사용하는 환경이라면 WEB-INF/config.properties 같은 기본 설정 파일이 존재하는지까지 함께 확인해야 합니다.

경로가 잘못되어도 애플리케이션이 기본 설정으로 정상 기동되는 구조라면, 겉으로는 아무 문제가 없는 것처럼 보일 수 있기 때문입니다.

Tomcat 설정이 안 먹는다면 setenv.bat부터 고치기 전에 먼저 “지금 Tomcat을 어떻게 띄우고 있는가?”를 확인해보세요.

이것만 확인해도 설정 문제를 찾는 시간이 상당히 줄어들 수 있습니다.

이 게시물이 얼마나 유용했나요?

별점을 클릭하여 평가하세요!

평균 평점 4.5 / 5. 투표 수: 300

아직 투표가 없습니다! 첫 번째로 평가해보세요.

홍TV

홍TV
함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.

error: Content is protected !!

광고 차단 알림

광고 클릭 제한을 초과하여 광고가 차단되었습니다.

단시간에 반복적인 광고 클릭은 시스템에 의해 감지되며, IP가 수집되어 사이트 관리자가 확인 가능합니다.