- - PR -
DebianのTomcat4のバグ?
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-05-18 11:48
お世話になっております。
struts1.1でWebアプリケーションを作成しましたが サーブレット action は現在利用できません というエラーが出て実行できませんでした。 開発自体はWin2k + tomcat4.1.30で行っていて問題なく動いていたのですが、 warファイルをDebian + tomcat4(apt-get)の環境に移したところ 実行できませんでした。 tomcat4は /etc/init.d/tomcat4 startで起動していたのですが、 $CATALINA_HOME/bin/catalina.sh start で起動しなおしたところ アプリケーションは正常に起動しました。 明らかに /etc/init.d/tomcat4 のスクリプトが間違っているのだと思い見てみたのですが、 私の知識ではどこがおかしいのかを発見することができませんでした。 以下に/etc/init.d/tomcat4を貼り付けておきます。 解決法をご存知の方、以下のスクリプトで何かお気づきの方いらっしゃっいましたら 教えてください。 よろしくお願いします。 #! /bin/sh -e # # /etc/init.d/tomcat4 -- startup script for the Tomcat 4.0 servlet engine # # Written by Miquel van Smoorenburg <miquels@cistron.nl>. # Modified for Debian GNU/Linux by Ian Murdock <imurdock@gnu.ai.mit.edu>. # Modified for Tomcat by Stefan Gybas <sgybas@debian.org>. PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin NAME=tomcat4 DESC="Tomcat 4.0 servlet engine" DAEMON=/usr/bin/$NAME CATALINA_HOME=/usr/share/$NAME # The following variables can be overwritten in /etc/default/tomcat4 # Run Tomcat 4.0 as this user ID (default: tomcat4) # Set this to an empty string to prevent Tomcat from starting automatically TOMCAT4_USER=tomcat4 # The first existing directory is used for JAVA_HOME (if JAVA_HOME is not # defined in /etc/default/tomcat4) JDK_DIRS="/usr/lib/j2se/1.3 /usr/lib/j2sdk1.3" # Arguments to pass to the Java virtual machine (JVM) CATALINA_OPTS="" # Use the Java security manager? (yes/no) TOMCAT4_SECURITY="yes" # End of variables that can be overwritten in /etc/default/tomcat4 # overwrite settings from default file if [ -f /etc/default/tomcat4 ]; then . /etc/default/tomcat4 fi test -f $DAEMON || exit 0 # Look for the right JVM to use for jdir in $JDK_DIRS; do if [ -d "$jdir" -a -z "${JAVA_HOME}" ]; then JAVA_HOME="$jdir" fi done export JAVA_HOME export CATALINA_OPTS # Define other required variables PIDFILE="/var/run/$NAME.pid" LOGDIR="$CATALINA_HOME/logs" WEBAPPDIR="$CATALINA_HOME/webapps" STARTUP_OPTS="" if [ "$TOMCAT4_SECURITY" = "yes" ]; then STARTUP_OPTS="-security" fi case "$1" in start) if [ -z "$TOMCAT4_USER" ]; then echo "Not starting $DESC as configured (TOMCAT4_USER is empty in" echo "/etc/default/tomcat4)." exit 0 fi if [ -z "$JAVA_HOME" ]; then echo "Could not start $DESC because no Java Development Kit" echo "(JDK) was found. Please download and install JDK 1.3 or higher and set" echo "JAVA_HOME in /etc/default/tomcat4 to the JDK's installation directory." exit 0 fi echo -n "Starting $DESC using Java from $JAVA_HOME: " # Remove dangling webapp symlinks for webapp in "$WEBAPPDIR"/*; do if [ "$webapp" != "$WEBAPPDIR/*" -a ! -e "$webapp" ]; then echo "Removing obsolete webapp $webapp" >>"$LOGDIR/catalina.out" rm "$webapp" >> "$LOGDIR/catalina.out" 2>&1 || true fi done # Symlink new webapps from /usr/share/java/webapps for webapp in /usr/share/java/webapps/*; do if [ -e "$webapp" -a ! -e "$WEBAPPDIR/`basename $webapp`" \ -a ! -e "$WEBAPPDIR/`basename $webapp .war`" ]; then echo "Symlinking new webapp $webapp" >>"$LOGDIR/catalina.out" ln -s "$webapp" "$WEBAPPDIR" || true fi done # Create catalina.policy (for the security manager) rm -f /var/lib/tomcat4/catalina.policy cat /etc/tomcat4/policy.d/*.policy >/var/lib/tomcat4/catalina.policy mkdir -p "$CATALINA_HOME/work/_temp" touch "$PIDFILE" "$LOGDIR/catalina.out" || true chown --dereference "$TOMCAT4_USER" "$PIDFILE" "$LOGDIR" \ "$LOGDIR/catalina.out" "$CATALINA_HOME/work" \ "$CATALINA_HOME/temp" || true if start-stop-daemon --test --start --pidfile "$PIDFILE" \ --user $TOMCAT4_USER --startas "$DAEMON" >/dev/null; then # -p preserves the environment (for $JAVA_HOME etc.) # -s is required because tomcat4's login shell is /bin/false su -p -s /bin/sh $TOMCAT4_USER \ -c "\"$DAEMON\" start $STARTUP_OPTS" \ >>"$LOGDIR/catalina.out" 2>&1 echo "$NAME." else echo "(already running)." fi ;; stop) echo -n "Stopping $DESC: " if start-stop-daemon --test --start --pidfile "$PIDFILE" \ --user $TOMCAT4_USER --startas "$DAEMON" >/dev/null; then echo "(not running)." else su -p $TOMCAT4_USER -c "\"$DAEMON\" stop" >/dev/null 2>&1 || true # Fallback to kill the JVM process in case stopping did not work sleep 1 start-stop-daemon --stop --oknodo --quiet --pidfile "$PIDFILE" \ --user "$TOMCAT4_USER" rm -f "$PIDFILE" echo "$NAME." fi ;; # reload) # echo -n "Reloading $DESC configuration files... " # echo "done." # ;; restart|force-reload) $0 stop sleep 1 $0 start ;; *) #echo "Usage: /etc/init.d/tomcat4 {start|stop|restart|reload|force-reload}" >&2 echo "Usage: /etc/init.d/tomcat4 {start|stop|restart|force-reload}" >&2 exit 1 ;; esac exit 0 |
|
投稿日時: 2004-05-18 15:53
自己レスです。
スクリプトのTOMCAT4_SECURITYをnoにすることにより /etc/init.d/tomcat4から正常起動することができました。 securityということでそこは触らないようにしていたのですが、 試しに外してみたところ解決できました。 あとはSecurityオプションにどのようなものがあったかを調べてみます。 お騒がせいたしました。 |
|
投稿日時: 2004-05-19 06:25
debianのtomcat4の場合、
/etc/tomcat4/policy.d/以下にセキュリティ関係の設定ファイルがあったと思います。 |
|
投稿日時: 2004-05-19 13:06
レスありがとうございます。
Tomcat4のセキュリティ設定でJDBCがネットワーク経由で利用できないということで、 policyファイルを1つ作成したのでそれが問題だったのかもしれません。 Tomcatについて勉強をしてみます。 |
1
