톰캣의 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}"