次の問題があります。
Tomcat 6.0.32 と Java JDK 6.0_26 を使用しています。正常にインストールされ、Tomcat の開始ページがポート 8080 のブラウザーに表示されます。
また、$CATALINA_HOME/setenv.sh スクリプトを作成し、いくつかの webapp 固有の環境変数を (CATALINA_HOME、JAVA_HOME、および CLASSPATH と共に) その中に入れました。
新しいユーザー「tomcat」を作成し、彼の新しいホームディレクトリを設定し、passwd-ed しました。
このスクリプトは、再起動時に Tomcat を自動的に起動および停止するために作成した init スクリプト内から供給されています。$CATALINA_HOME にある標準的な startup.sh と shutdown.sh は使用せず、jsvc デーモン スターターを使用するので、非ルート プロセス (Tomcat 自体) からポート 8080 を使用できます。
実際の問題は、Tomcat を再起動した後、webapp が setenv.sh で設定した環境変数を受信または表示しないため、起動しないことです。
環境変数の定義をさまざまな場所に配置しようとしました。
- tomcat ホーム ディレクトリの .bashrc
- /etc/init.d/tomcat スクリプト
- $CATALINA_HOME/bin/setenv.sh
- $CATALINA_HOME/webapps/myapp/META-INF/context.xml
Tomcat の起動後、Web アプリケーションに必要な環境変数が表示されません。
私の質問は - 私は一体何をしているのですか?何か提案はありますか?setenv.sh が機能しない場合、環境変数を webapp に転送するにはどうすればよいですか? このメカニズムに問題があるのはなぜですか (これは、環境変数を webapps に渡す方法だとされています)
これが私が書いた起動スクリプトです:
#!/bin/sh
### BEGIN INIT INFO
# Provides: allfaweb
# Required-Start: $syslog $apache $apache2 $httpd
# Should-Start:
# Required-Stop: $syslog $apache $apache2 $httpd
# Should-Stop:
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: ALLFAweb service
### END INIT INFO
ALLFAWEB_BIN=/install/apache-tomcat-6.0.32-allfaweb/bin/jsvc
test -x $ALLFAWEB_BIN || { echo "$ALLFAWEB_BIN not installed";
if [ "$1" = "stop" ]; then exit 0;
else exit 5; fi; }
# Check for existence of setenv.sh file and read it
ALLFAWEB_CONFIG=/install/apache-tomcat-6.0.32-allfaweb/bin/setenv.sh
test -r $ALLFAWEB_CONFIG || { echo "$ALLFAWEB_CONFIG not existing";
if [ "$1" = "stop" ]; then exit 0;
else exit 6; fi; }
. /etc/rc.status
rc_reset
. /install/apache-tomcat-6.0.32-allfaweb/bin/setenv.sh;
case "$1" in
start)
echo -n "Starting ALLFAweb ";
$ALLFAWEB_BIN \
-user tomcat \
-home $JAVA_HOME \
-Dcatalina.home=$CATALINA_HOME \
-pidfile $ALLFAWEB_PID \
-outfile $CATALINA_HOME/logs/catalina.out \
-errfile $CATALINA_HOME/logs/catalina.err \
-cp $CLASSPATH org.apache.catalina.startup.Bootstrap
rc_status -v
;;
stop)
echo -n "Shutting down ALLFAweb "
$ALLFAWEB_BIN \
-stop \
-pidfile $ALLFAWEB_PID \
org.apache.catalina.startup.Bootstrap
rc_status -v
;;
restart)
$0 stop
$0 start
rc_status
;;
status)
echo -n "Checking for service ALLFAweb ";
/sbin/checkproc $ALLFAWEB_BIN
rc_status -v
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
rc_exit
私が使用しているシステムは SUSE SP2 です。
# uname -a
Linux testmachine 3.0.51-0.7.9-default #1 SMP Thu Nov 29 22:12:17 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
どんな助けでも大歓迎です!前もって感謝します :)