aboutsummaryrefslogtreecommitdiff
path: root/java/jboss5/files/jboss5.sh.in
blob: d497027a5323105e6f7338054d8889a77fc46a74 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#!/bin/sh
#
# %%APP_SHORTNAME%% startup script.
#
# $FreeBSD$
#

# PROVIDE: %%APP_SHORTNAME%%
# REQUIRE: NETWORKING SERVERS

# 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

%%APP_SHORTNAME%%_user="%%USER%%"
%%APP_SHORTNAME%%_logdir="%%LOG_DIR%%"

name="%%APP_SHORTNAME%%"
rcvar=%%APP_SHORTNAME%%_enable

load_rc_config $name

%%APP_SHORTNAME%%_enable="${%%APP_SHORTNAME%%_enable:-"NO"}"
%%APP_SHORTNAME%%_jvm_opts="${%%APP_SHORTNAME%%_jvm_opts:-"-server -Xms128m -Xmx512m -XX:MaxPermSize=256m -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"}"
%%APP_SHORTNAME%%_logging="${%%APP_SHORTNAME%%_logging:-">> ${%%APP_SHORTNAME%%_logdir}/stdout.log 2>> ${%%APP_SHORTNAME%%_logdir}/stderr.log"}"

start_cmd="%%APP_SHORTNAME%%_start"
stop_cmd="%%APP_SHORTNAME%%_stop"
pidfile="%%PID_FILE%%"

JBOSS_HOME="%%APP_HOME%%"
JBOSS_DEPLOY="%%DEPLOY_DIR%%"
JBOSS_MAIN="org.jboss.Main"
JAVA_OPTS="${%%APP_SHORTNAME%%_jvm_opts} \
  -Djboss.server.base.dir=${JBOSS_DEPLOY} \
  -Djboss.server.base.url=file://${JBOSS_DEPLOY} \
  -Djava.endorsed.dirs=${JBOSS_HOME}/lib/endorsed \
  -classpath ${JBOSS_HOME}/bin/run.jar ${JBOSS_MAIN}"

%%APP_SHORTNAME%%_start ()
{
	if [ ! -d "${%%APP_SHORTNAME%%_logdir}" ]
	then
		mkdir -p ${%%APP_SHORTNAME%%_logdir}
		chown ${%%APP_SHORTNAME%%_user} ${%%APP_SHORTNAME%%_logdir}
	fi

	echo "Starting %%APP_SHORTNAME%%."
	daemon -u ${%%APP_SHORTNAME%%_user} sh -c "java ${JAVA_OPTS} ${%%APP_SHORTNAME%%_args} ${%%APP_SHORTNAME%%_logging} &"

	sleep 1		# let daemon(8) and sh(1) finish before executing pgrep(1)
	pgrep -U ${%%APP_SHORTNAME%%_user} -f ${JBOSS_MAIN} > ${pidfile}
	chown ${%%APP_SHORTNAME%%_user} $pidfile
}

%%APP_SHORTNAME%%_stop ()
{
	# Subvert the check_pid_file procname check.
	if [ -f ${pidfile} ]
	then
		read rc_pid junk < $pidfile
		if [ ! -z "${rc_pid}" ]
		then
			procname=`ps -o ucomm= ${rc_pid}`
		fi
	fi

	rc_pid=$(check_pidfile $pidfile *$procname*)

	if [ -z "${rc_pid}" ]
	then
		[ -n "${rc_fast}" ] && return 0
		if [ -n "${pidfile}" ]
		then
			echo "${name} not running? (check ${pidfile})."
		else
			echo "${name} not running?"
		fi
		return 1
	fi

	echo "Stopping ${name}."
	kill ${rc_pid} 2> /dev/null
	jboss_wait_max_for_pid %%STOP_TIMEOUT%% ${rc_pid}
	kill -KILL ${rc_pid} 2> /dev/null && echo "Killed."
	rm -f ${pidfile}
}

jboss_wait_max_for_pid ()
{
	_timeout=$1
	shift
	_pid=$1
	_prefix=
	while [ $_timeout -gt 0 ]
	do
		echo -n ${_prefix:-"Waiting (max $_timeout secs) for PIDS: "}$_pid
		_prefix=", "
		sleep 2
		kill -0 $_pid 2> /dev/null || break
		_timeout=$(($_timeout-2))
	done
	if [ -n "$_prefix" ]; then
		echo "."
	fi
}

run_rc_command "$1"