ports/java/jboss72/files/jboss72.in
Chris Rees fcbe324489 java/jboss72: distfile rerolled and enhance rc script
Distfile was rerolled, maintainer has checked that there are no spurious changes

RC script now can be tuned to hard way kill stuck JBoss or any child
processes preventing restart; RC script can be configured to make a
delay after killing (for example for restart).

Add LICENSE info.

PR:		ports/178142
Submitted by:	Alexander Yerenkow <yerenkow@gmail.com> (maintainer)
2013-05-04 18:27:34 +00:00

77 lines
2.5 KiB
Bash

#!/bin/sh
#
# %%APP_SHORTNAME%% startup script.
#
# $FreeBSD$
#
# PROVIDE: %%APP_SHORTNAME%%
# REQUIRE: NETWORKING SERVERS
# KEYWORD: shutdown
# Add the following lines to /etc/rc.conf to enable %%APP_SHORTNAME%%:
# %%APP_SHORTNAME%%_enable (bool): Set to "YES" to enable %%APP_SHORTNAME%%
# %%APP_SHORTNAME%%_jvm_opts (str): Extra JVM flags.
# %%APP_SHORTNAME%%_args (str): Optional arguments to JBoss
# %%APP_SHORTNAME%%_logging (str) JBoss log output. A pipe command may be used.
#
. /etc/rc.subr
name="%%APP_SHORTNAME%%"
rcvar=%%APP_SHORTNAME%%_enable
load_rc_config $name
%%APP_SHORTNAME%%_enable="${%%APP_SHORTNAME%%_enable:-"NO"}"
%%APP_SHORTNAME%%_logging="${%%APP_SHORTNAME%%_logging:-">> ${%%APP_SHORTNAME%%_logdir}/stdout.log 2>> ${%%APP_SHORTNAME%%_logdir}/stderr.log"}"
%%APP_SHORTNAME%%_sleep="${%%APP_SHORTNAME%%_sleep:-"5"}"
%%APP_SHORTNAME%%_kill9="${%%APP_SHORTNAME%%_kill9:-""}"
%%APP_SHORTNAME%%_additional_killall="${%%APP_SHORTNAME%%_additional_killall:-""}"
%%APP_SHORTNAME%%_user="%%USER%%"
%%APP_SHORTNAME%%_logdir="%%LOG_DIR%%"
start_cmd="%%APP_SHORTNAME%%_start"
stop_cmd="%%APP_SHORTNAME%%_stop"
pidfile="%%PID_FILE%%"
JBOSS_HOME="%%APP_HOME%%"
%%APP_SHORTNAME%%_start ()
{
if [ ! -d "${%%APP_SHORTNAME%%_logdir}" ]
then
install -d -o ${%%APP_SHORTNAME%%_user} ${%%APP_SHORTNAME%%_logdir}
fi
echo "Starting %%APP_SHORTNAME%%."
daemon -u ${%%APP_SHORTNAME%%_user} ${JBOSS_HOME}/bin/standalone.sh ${%%APP_SHORTNAME%%_logging} >> ${%%APP_SHORTNAME%%_logdir}/boot.log 2>> ${%%APP_SHORTNAME%%_logdir}/boot.log
sleep ${%%APP_SHORTNAME%%_sleep} # let daemon(8) and sh(1) finish before executing pgrep(1)
pgrep -U ${%%APP_SHORTNAME%%_user} -f ${JBOSS_HOME}/modules > ${pidfile}
chown ${%%APP_SHORTNAME%%_user} $pidfile
}
%%APP_SHORTNAME%%_stop ()
{
# Subvert the check_pid_file procname check.
if [ -f ${pidfile} ]
then
kill `cat ${pidfile}`
# Only if we aware that our setup can hangs, and only after trying simple kill, we can kill it hard way.
if [ ! -z "${%%APP_SHORTNAME%%_kill9}" ]
then
sleep ${%%APP_SHORTNAME%%_sleep}
kill -9 `cat ${pidfile}`
fi
# In some setups, JBoss can spawn some child processess, which could prevent it from stopping, and freeing net ports.
# Let's blindly kill them all, since we are really know what we are doing.
if [ ! -z "${%%APP_SHORTNAME%%_additional_killall}" ]
then
sleep ${%%APP_SHORTNAME%%_sleep}
killall ${%%APP_SHORTNAME%%_additional_killall}
fi
fi
}
run_rc_command "$1"