|
Wapperがアプリケーションを起動できるようにWapperの設定を変更する前に、
通常使う完全なJavaコマンドを知っておく必要があります。
ほとんどのアプリケーションでは、バッチファイルを活用し、実際のコマンドラインを操作します。
一般的に、ほとんどのスクリプトは、かなり重すぎたりで扱いにくい傾向にありますが、
実際のところ、Wrapperの優れた能力により、
それらのスクリプトと無関係に動かすことができるのも、Wrapperメリットの一つなのです。
Tomcatは、「bin」ディレクトリーの中にある
「startup.sh」と呼ばれるスクリプトを使ってTomcatを起動し、
「shutdown.sh」と呼ばれるスクリプトを使ってシャットダウンします。
まずカレント・ディレクトリーを「bin」ディレクトリーへ変更して、そこから起動します。
「shutdown.sh」をエディターで開いてみると、気づくと思いますが、
実は、Javaはこのスクリプトによって起動されているわけではないのです。
実際のところ、「catalina.sh」という名前のスクリプトが呼び出されています。
Tomcatのスクリプトはとても高度にできていて、
ユーザーがコマンドラインから多様な設定がでいるようになっています。
Wrapperで利用したりキャプチャしたりするコマンドラインは、
実際にはそういったコンフィギュレーションの1つのスナップショットなのです。
具体例をあげてみると、稼働時には、スタートアップ・スクリプトにも
シャットダウン・スクリプトにも、パラメーターが渡されていません。
「catalina.sh」をエディターで開いて、
一番下までスクロールしてみると、[start]コマンドに応答するセクションが見えます。
JVMを起動する際に、セキュリティ・マネージャーを使う/使わない、
オプションが2つあります。事をシンプルにするために、
ここではセキュリティ・マネージャー使わない選択にします。
注目するラインは、以下のとおりです:
"$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_BASE"/logs/catalina.out 2>&1 &
|
大多数のスクリプトには、システム・スペック情報を収集して、
その情報を環境変数の中に格納するタスク機能を備えています。
上記の行を明記することにより、収集した全ての情報を最終のJavaコマンドへと拡張させ、
それでアプリケーションを起動させることになります。
そのスクリプトのソースを見れば分かるとおり、
複雑なスクリプトで高機能を備えたものだと感謝してもらえたり、
複雑なスクリプトを書く面倒から完全に免れられる喜びなど、
皆様の様々な希望を叶えているものだろうと、私達は願っています。
Wrapperの設定で、本当に必要な個所は、その最後の拡張コマンドラインなのです。
スクリプト全体を読みこなしたり、理解しようと試みるよりは、
むしろ、ちょっとした簡単な小細工をしかけることで、
コンソールで最終コマンドラインを表示させることができます。
スクリプト「catalina.sh」をエディターで開き、下記のように変更を加えてください:
#"$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS \
# -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
# -Dcatalina.base="$CATALINA_BASE" \
# -Dcatalina.home="$CATALINA_HOME" \
# -Djava.io.tmpdir="$CATALINA_TMPDIR" \
# org.apache.catalina.startup.Bootstrap "$@" start \
# >> "$CATALINA_BASE"/logs/catalina.out 2>&1 &
echo "$_RUNJAVA $JAVA_OPTS $CATALINA_OPTS " \
"-Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS -classpath $CLASSPATH" \
"-Dcatalina.base=$CATALINA_BASE" \
"-Dcatalina.home=$CATALINA_HOME" \
"-Djava.io.tmpdir=$CATALINA_TMPDIR" \
"org.apache.catalina.startup.Bootstrap $@ start" \
">> $CATALINA_BASE/logs/catalina.out 2>&1 &"
|
今、そのスクリプトを再始動すると、コンソールに下記のようなものが表示されるでしょう
(出力結果は全て一行で表示):
/opt/IBMJava2-131/bin/java
-Djava.endorsed.dirs=/usr/lib/jakarta-tomcat-4.1.18/bin:/usr/lib/jakarta-tomcat-4.1.18/common/endorsed
-classpath /opt/IBMJava2-131/lib/tools.jar:/usr/lib/jakarta-tomcat-4.1.18/bin/bootstrap.jar
-Dcatalina.base=/usr/lib/jakarta-tomcat-4.1.18 -Dcatalina.home=/usr/lib/jakarta-tomcat-4.1.18
-Djava.io.tmpdir=/usr/lib/jakarta-tomcat-4.1.18/temp org.apache.catalina.startup.Bootstrap start
>> /usr/lib/jakarta-tomcat-4.1.18/logs/catalina.out 2>&1 &
|
上記の「startup.sh」スクリプト同様に、
「shutdown.sh」スクリプトにも同じ手順を繰り返してください。
「shutdown.sh」をエディターで開いてスクロールして、
上記で編集したセクションの直下に[stop]コマンドを設置してください:
exec "$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
org.apache.catalina.startup.Bootstrap "$@" stop
|
このセクションを以下のように編集してください:
#exec "$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS \
# -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
# -Dcatalina.base="$CATALINA_BASE" \
# -Dcatalina.home="$CATALINA_HOME" \
# -Djava.io.tmpdir="$CATALINA_TMPDIR" \
# org.apache.catalina.startup.Bootstrap "$@" stop
echo "exec $_RUNJAVA $JAVA_OPTS $CATALINA_OPTS" \
"-Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS -classpath $CLASSPATH" \
"-Dcatalina.base=$CATALINA_BASE" \
"-Dcatalina.home=$CATALINA_HOME" \
"-Djava.io.tmpdir=$CATALINA_TMPDIR" \
"org.apache.catalina.startup.Bootstrap $@ stop"
|
ここで、「shutdown.sh」スクリプトを始動すると、
コンソールに下記のようなものが表示されるでしょう (出力結果は全て一行で表示):
exec /opt/IBMJava2-131/bin/java
-Djava.endorsed.dirs=/usr/lib/jakarta-tomcat-4.1.18/bin:/usr/lib/jakarta-tomcat-4.1.18/common/endorsed
-classpath /opt/IBMJava2-131/lib/tools.jar:/usr/lib/jakarta-tomcat-4.1.18/bin/bootstrap.jar
-Dcatalina.base=/usr/lib/jakarta-tomcat-4.1.18 -Dcatalina.home=/usr/lib/jakarta-tomcat-4.1.18
-Djava.io.tmpdir=/usr/lib/jakarta-tomcat-4.1.18/temp org.apache.catalina.startup.Bootstrap stop
|
シャットダウン・ラインの初めにある「exec」部や、
スタートアップ・ラインのリダイレクトされた出力の部、
それ以外では、2つのコマンドはほとんど同等のものです。
唯一の違いは、最後にメイン・クラスへ渡されたパラーメーターです。
シャットダウン・コマンドの「exec」部や、コンソール出力のキャプチャするリダイレクトは、
Wrapperの利用に影響がないため、ここでの以降の事例説明では、コマンド部を無視することにします。
また、Wrapperは、ビルドするJava コマンドラインのエレメンツの引用も扱いますので、
下記のコンフィギュレーション・ファイル「wrapper.conf」へ引き継ぐ必要はありません。
|