jojo's blog--快乐忧伤都与你同在
为梦想而来,为自由而生。 性情若水,风起水兴,风息水止,故时而激荡,时又清平……
posts - 11,  comments - 30,  trackbacks - 0

I’ve been working with Glassfish recently, from the system administration point of view.  First task, after getting a good build with Maven (doing it with basic rpm methods netted me a massive dependency list, including things like Firefox!), was to write an init script so that Glassfish can be integrated into the CentOS boot sequence.

Because we might have multiple domains set up inside of Glassfish, I opted for a setup similar to the Tomcat5 init script - check the basename of $0, and use that to determine which domain to boot up.  The fiddling in start() gets around the fact that Glassfish doesn’t seem to write a PID file out where we need one.

So, just in case anyone else needs to do this:

#!/bin/bash
# chkconfig: 2345 85 15
# description: GlassFish is a Java Application Server.
# processname: glassfish
# pidfile: /var/run/glassfish.pid

# source function library
. /etc/init.d/functions

RETVAL=0

GLASSFISH_BIN="/var/lib/glassfish/bin"

# Basename works with symbolic links.
NAME="$(basename $0)"
unset ISBOOT

# Trim off the Sxx/Kxx prefix
if [ "${NAME:0:1}" = "S" -o "${NAME:0:1}" = "K" ]; then
NAME="${NAME:3}"
ISBOOT="1"
fi

# Trim off the glassfish- prefix
NAME=${NAME:10}

# /etc/init.d/glassfish should never be called directly.
if [ -z $NAME ]; then
echo -n $"Cannot start Glassfish without specifying a domain."
failure
echo
exit 1
fi

start() {

echo -n $"Starting Glassfish V2 domain $NAME: "
daemon --user glassfish --pidfile /var/run/glassfish-$NAME.pid "$GLASSFISH_BIN/asadmin start-domain $NAME >/dev/null 2>&1"
RETVAL=$?

if [ $RETVAL -eq 0 ]; then
PID=`ps U glassfish | grep $NAME | awk '{ print $1}'`
echo $PID > /var/run/glassfish-$NAME.pid
touch /var/lock/subsys/glassfish-$NAME
fi

echo
}


stop() {

echo -n $"Shutting down Glassfish V2 domain $NAME: "

$GLASSFISH_BIN/asadmin stop-domain $NAME >/dev/null 2>&1

RETVAL=$?

[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/glassfish-$NAME && rm -f /var/run/glassfish-$NAME && success || failure

echo

}

case "$1" in

start)

start

;;

stop)

stop
;;

restart|reload)

stop

start

;;

condrestart)

if [ -f /var/lock/subsys/glassfish-$NAME ]; then

stop

start
fi
;;

status)
status glassfish-$NAME

RETVAL=$?
;;

*)

echo $"Usage: $0 {start|stop|restart|condrestart|status}"

exit 1

esac

exit $RETVAL

The alternative is to define a /etc/sysconfig/glassfish file, and insert a variable with the list of domains to boot, in sequence.  This is a little harder to manage automatically in Puppet, but might be a better solution if precise boot sequences are required (this method will boot in sequence based on the S numbers in the base script, and then the alphabetical ordering of the names).

posted on 2009-06-10 14:38 Blog of JoJo 阅读(289) 评论(0)  编辑  收藏 所属分类: 每日一记My Script

只有注册用户登录后才能发表评论。


网站导航:
 

<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(6)

随笔档案

文章分类

文章档案

新闻分类

新闻档案

相册

收藏夹

搜索

  •  

最新评论

阅读排行榜

评论排行榜