WebObjectsの運用 | 起動スクリプトを書く

Error message

Deprecated function: The each() function is deprecated. This message will be suppressed on further calls in book_prev() (line 775 of /home/mambo/www/modules/book/book.module).

 

■シンプルな起動スクリプトを作る

例えば、HelloWorld.woaの場合、run_Hello.sh という起動スクリプトを作る。

#! /bin/bash

export NEXT_ROOT=/opt/WebObjects5.2.4
export PATH=/usr/jdk/j2sdk1.4.2_08/bin:$PATH

cd HelloWorld.woa
./HelloWorld -WOPort 50010

ポート番号は、netstatで調べて開いているものを使う。今回は、50010番にした。

このスクリプトを作ったら、chmodして、起動する。

$ chmod 755 run_Hello.sh
$ ./run_Hello.sh &

 &を付けて起動したら、ちゃんと、exitしてログオフすることを忘れずに。忘れてターミナルを閉じたり、スリープに入るとアプリが落ちてしまうぞな。

 

ブラウザから、接続してテストする。

http://192.168.1.123:50010/ 

 

■賢い起動スクリプトを作る 

 上記に以下の機能を加える。

・ログを書き出す。

・ログに起動と停止の時間を書き込む。

・落ちた場合、6秒スリープした後、自動的に起動する。

#! /bin/bash

export NEXT_ROOT=/opt/WebObjects5.2.4
export PATH=/usr/jdk/j2sdk1.4.2_08/bin:$PATH

DIR=`pwd`
LOG=${DIR}/HelloWorld.log

cd ${DIR}/HelloWorld.woa

while true
do
echo STARTUP - `date +%Y/%m/%d-%T` >> ${LOG}
./HelloWorld -WOPort 50010 >> ${LOG} 2>&1
echo SHUTDOWN - `date +%Y/%m/%d-%T` >> ${LOG}
sleep 6
done

 while と sleepの組み合わせがミソですな。sleepをゼロにすると、やばいアプリの場合手がつけられなくなるので、数秒スリープ時間を入れませう。

 

大先輩のスクリプトを自分が分かるように書き直しているうちにこういう書き方に落ち着きました。

 

ここで、WOPort以外の引数、たとえばメモリの量とかも指定できるのでもっともっと長いスクリプトに育てていくのもいいかと思われます。