본문 바로가기

Server/Tomcat

[톰캣] setenv.sh 옵션 설정

톰캣의 catalina.sh 파일에는 자바 옵션 설정 및 톰캣 로그 경로등 각종 설정을 저장할 수 있다. 


catalina.sh 파일에는 기본적으로 다양한 설정이 존재하기 때문에 설정 변경시 실수하여 문제가 발생 할 수 있다.


톰캣에는 추가 옵션을 설정하는 다른 방법이 하나 더 있는데 톰캣이 설치된 bin 디렉토리 안에 setenv.sh 파일을 생성하고 추가 커스텀 옵션을 설정할 수 있다.


아래와 같이 catalina.sh이 실행될 때 setenv.sh 파일의 옵션을 등록하게 된다.

# Ensure that any user defined CLASSPATH variables are not used on startup,
# but allow them to be specified in setenv.sh, in rare case when it is needed.

CLASSPATH=

if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then

  . "$CATALINA_BASE/bin/setenv.sh"

elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then

  . "$CATALINA_HOME/bin/setenv.sh"

fi



추가 커스텀 옵션을 별도 파일에 설정해둠으로서 톰캣을 업그레이드 하거나 다른 서버에 확장을 할 때에도 유지보수가 뛰어난점이 있다.


다음은 setenv.sh 파일에 추가 옵션을 설정한 예다. 

JAVA_OPTS=$JAVA_OPTS" -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=384m -XX:MaxNewSize=384m -XX:PermSize=128m -XX:MaxPermSize=128m"
JAVA_OPTS=$JAVA_OPTS" -XX:-HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$CATALINA_HOME/logs"
JAVA_OPTS=$JAVA_OPTS" -XX:ParallelGCThreads=2 -XX:-UseConcMarkSweepGC"
JAVA_OPTS=$JAVA_OPTS" -XX:-PrintGC -XX:-PrintGCDetails -XX:-PrintGCTimeStamps -XX:-TraceClassUnloading -XX:-TraceClassLoading"

JMX_OPTS=" -Dcom.sun.management.jmxremote \
                 -Dcom.sun.management.jmxremote.authenticate=false \
                 -Djava.rmi.server.hostname=${HOSTNAME} \
                -Dcom.sun.management.jmxremote.ssl=false "
CATALINA_OPTS=" ${JMX_OPTS} ${CATALINA_OPTS}"