Java Web アプリケーションを Tomcat 上で動かしていて、アプリケーション内で日本語メッセージをログに出力している場合、ロケール設定が適切でないと、日本語が文字化けする。対処するには、Tomcat の起動スクリプト内でロケールを指定してやれば良い。
- /etc/init.d/tomcat
#!/bin/sh # # chkconfig: 2345 80 25 # description: Starts and stops the Apache Tomcat JAVA_HOME="/usr/java/default" CATALINA_HOME="/usr/local/tomcat" DAEMON_HOME="/usr/local/tomcat/bin" TOMCAT_USER=tomcat # for multi instances adapt those lines. TMP_DIR="/var/tmp" PID_FILE="/var/run/jsvc.pid" CATALINA_BASE="/usr/local/tomcat" CATALINA_OPTS="-Xms128m -Xmx6144m -XX:PermSize=128m -XX:MaxPermSize=2100m" CLASSPATH="$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/bin/commons-daemon.jar:$CATALINA_HOME/bin/bootstrap.jar" RETVAL=0 umask 002 LANG=ja_JP.UTF-8 # ← これでロケールを設定している start() { $DAEMON_HOME/jsvc \ -user $TOMCAT_USER \ -home $JAVA_HOME \ -Dcatalina.home=$CATALINA_HOME \ -Dcatalina.base=$CATALINA_BASE \ -Djava.io.tmpdir=$TMP_DIR \ -Dcom.sun.management.jmxremote.port=5555 \ -Dcom.sun.management.jmxremote.ssl=false \ -wait 10 \ -pidfile $PID_FILE \ -outfile $CATALINA_HOME/logs/catalina.out \ -errfile '&1' \ $CATALINA_OPTS \ -cp $CLASSPATH \ org.apache.catalina.startup.Bootstrap # # To get a verbose JVM #-verbose \ # To get a debug of jsvc. #-debug \ exit $? } stop() { $DAEMON_HOME/jsvc \ -stop \ -pidfile $PID_FILE \ org.apache.catalina.startup.Bootstrap exit $? } case "$1" in start) start ;; stop) stop ;; *) echo "Usage: jsvc start/stop" exit 1;; esac