LoGin
article thumbnail
반응형

 

 

 

 

 

startup.bat 파일은 Apache Tomcat을 실행하는 데 사용되는 배치 파일입니다. Tomcat서버를 시작하기 위해 필요한 환경을 설정하고 Java 프로세스를 실행하는 역할을 한다. 일반적으로 Window 환경에서는 이 파일을 사용하여 Tomcat을 시작하고 실행한다.

유닉스 기반 맥, 리눅스는 statup.sh 파일을 이용해서 시작하겠죠.

 

 

 

 

우선 startup.bat파일은 이와 같이 생겼다.

 

 

요약

아래 정리 처럼 코드 벼로 정리해도 좋지만 전체적으로 흐름이나 어떤 코드를 의미하는지만 분석해도 좋다.

누군가에게 설명할 땐 이렇게 설명할 것 같다.

이중 메인 명령은 가장 밑 call 부분이다. startup.bat인 만큼 위쪽에서

'해당 폴더에 파일이 있는지 확인하고 있다면 다음으로 넘어가',

'파일이나 폴더가 없다면 중지'

문제가 없다면 중지되지 않을 것이고 문제없이 카탈리나가 실행되게 될 것이다.

 

아마 catalina.bat/. sh shutdown.bat/. sh 도 방식은 비슷할 것이다.

 

분석

환경 설정 검사

  • 조건을 통해 필요한 환경 변수를 설정하고 환경 설정이 올바른지 확인
  • 예시로, CATALINA_HOME이나 CATALINA_BASE 경로 설정 확인

클래스 패스 설정

  • Tomcat 실행에 필요한 클래스패스를 구성

실행 옵션 설정

  • 보안 설정, 디버그 모드 설정 등 다양한 실행 옵션을 설정

명령어 실행

  • 설정한 옵션과 함께 Java를 실행하여 Tomcat을 시작한다.
  • 해당 명령어에 따라 보안 관련 옵션이나 디버그 모드를 설정하여 실행한다.

종료

  • Tomcat이 정상적으로 실행되면 마지막에는 중단되지 않고 계속 실행된다. 종료 조건에 따라 중지됩니다.

 


 

상세분석

코드를 나름대로 해석해 보겠습니다.

 

@echo off

배치 파일이 실행될 때 화면에 명령어를 출력하지 않도록 설정한다.

 

rem Licensed to the Apache Software Foundation (ASF) under one or more
rem contributor license agreements.  See the NOTICE file distributed with
rem this work for additional information regarding copyright ownership.
rem The ASF licenses this file to You under the Apache License, Version 2.0
rem (the "License"); you may not use this file except in compliance with
rem the License.  You may obtain a copy of the License at
rem
rem     http://www.apache.org/licenses/LICENSE-2.0
rem
rem Unless required by applicable law or agreed to in writing, software
rem distributed under the License is distributed on an "AS IS" BASIS,
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rem See the License for the specific language governing permissions and
rem limitations under the License.

ASF(아파치 소프트웨어 재단)에 의해 라이선스가 부여된 내용을 설명.

 

rem ---------------------------------------------------------------------------
rem Start script for the CATALINA Server
rem ---------------------------------------------------------------------------

Tomcat 서버 시작하는 스크립트임을 설명하는 주석

 

setlocal

지역 변수를 설정한다. 이 스크립트에서 설정한 변수들은 스크립트 실해이 종료되면 사라진다.

 

rem Guess CATALINA_HOME if not defined
set "CURRENT_DIR=%cd%"

CATALINA_HOME이 정의되지 않은 경우 현재 디렉토리를 CATALINA_HOME으로 추측한다.

 

if not "%CATALINA_HOME%" == "" goto gotHome

만약 CATALINA_HOME이 비어 있지 않다면 gotHome으로 이동

 

set "CATALINA_HOME=%CURRENT_DIR%"

CATALINA_HOME현재 디렉토리로 설정합니다.

 

if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome

CATALINA_HOME 디렉토리에 catalina.bat 파일이 존재하는지 확인한다.

 

cd ..
set "CATALINA_HOME=%cd%"
cd "%CURRENT_DIR%"

상위 디렉토리로 이동하고, 그곳을 CATALINA_HOME으로 설정한다.

 

:gotHome

:gotHome
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome

CATALINA_HOME디렉토리에 catalina.bat 파일이 존재하는지 다시 확인한다.

 

echo The CATALINA_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program
goto end

만약 CATALINA_HOME이 정의되지 않았다면, 이 환경 변수가 필요하다는 메시지를 출력하고 스크립트를 종료

 

:okHome

okHome으로 이동

 

set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"

EXECUTABLE변수에 catalina.bat 파일의 경로를 설정한다.

 

rem Check that target executable exists
if exist "%EXECUTABLE%" goto okExec

EXECUTABLE파일이 존재하는지 확인한다.

 

echo Cannot find "%EXECUTABLE%"
echo This file is needed to run this program
goto end

만약 EXECUTABLE 파일이 존재하지 않는다면, 이 파일이 필요하다는 메시지를 출력하고 스크립트를 종료한다.

 

:okExec

okExec로 이동

 

rem Get remaining unshifted command line arguments and save them in the
set CMD_LINE_ARGS=
:setArgs
if ""%1""=="""" goto doneSetArgs
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
shift
goto setArgs
:doneSetArgs

실행되지 않은 명령행 인수를 가져와서 CMD_LINE_ARGS 변수에 저장한다.

 

call "%EXECUTABLE%" start %CMD_LINE_ARGS%

EXCUTABLE 파일을 호출하여 Tomcat서버를 시작한다.

 

:end

스크립트의 끝을 나타내는 레이블

 

728x90
반응형
profile

LoGin

@LoGinShin

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!