sync
[shellsnippets/shellsnippets.git] / mksh / sysadmin / jboss-management.shar
1 # This is a shell archive.  Save it in a file, remove anything before
2 # this line, and then unpack it by entering "sh file".  Note, it may
3 # create directories; files and directories will be owned by you and
4 # have default permissions.
5 #
6 # This archive contains:
7 #
8 #       jboss-management/jboss.sh
9 #       jboss-management/taract.init
10 #
11 mkdir jboss-management
12 echo x - jboss-management/jboss.sh
13 sed 's/^X//' >jboss-management/jboss.sh << 'END-of-jboss-management/jboss.sh'
14 X#!/bin/mksh
15 X#-
16 X# tarent-activity WildFly startup script
17 X# Copyright © 2013
18 X#      Thorsten “mirabilos” Glaser <t.glaser@tarent.de>
19 X#      Umer Kayani <u.kayani@tarent.de>
20 X# All rights reserved.
21 X#
22 X# Licenced under the GNU AGPLv3.
23 X
24 X# Settings (paths replaced by the installer)
25 XJBOSS_HOME='$INSTALL_PATH/bundles/jboss-7.1.1'
26 XJBOSS_BIND_ADDRESS='$jboss.configureBindAddress'
27 X
28 X# Settings (to be adjusted by the local administrator if necessary)
29 Xexport LC_ALL=de_DE.UTF-8
30 X#export LC_ALL=en_GB.UTF-8
31 X
32 X# Initialisation code
33 X
34 Xjbin=$JBOSS_HOME/bin
35 Xjlog=$JBOSS_HOME/standalone/log/server.log
36 Xjpid=$JBOSS_HOME/standalone/log/jboss.pid
37 Xjcli=$jbin/jboss-cli.sh
38 X
39 Xfunction usage {
40 X       print 'Usage: ./jboss.sh [log | start | status | stop | trigger_start]'
41 X       exit ${1:-1}
42 X}
43 X
44 Xfunction do_trigger {
45 X       local q=0 what=$1
46 X       shift
47 X
48 X       if [[ $1 = -q ]]; then
49 X               q=1
50 X               shift
51 X       fi
52 X
53 X       (( q )) || print Starting tarent-activity WildFly Application Server...
54 X       (( q )) || print
55 X       (( q )) || case $what {
56 X       (t)
57 X               print Server startup may take a while - \
58 X                   check logfiles for completion.
59 X               ;;
60 X       (*)
61 X               print Server startup may take a while.
62 X               ;;
63 X       }
64 X       export LAUNCH_JBOSS_IN_BACKGROUND=1 JBOSS_PIDFILE=$jpid jbin
65 X       mkdir -p "${jpid%/*}"
66 X       rm -f "$jpid"   #XXX but the init script handles this
67 X       mksh -T- -c "\"\$jbin\"/standalone.sh -b $JBOSS_BIND_ADDRESS"
68 X       # wait for a maximum of five seconds until the PID file is created
69 X       local i=0
70 X       while (( ++i < 5 )); do
71 X               sleep 1
72 X               [[ -s $jpid ]] && break
73 X       done
74 X       [[ -s $jpid ]] && return 0
75 X       (( q )) || print 'The WildFly standalone.sh failed to create a PID file in time.'
76 X       (( q )) || print 'Startup execution inconclusive.'
77 X       exit 1
78 X}
79 X
80 Xfunction do_wait {
81 X       local maxdelay=240 i=0 found=0 deploy deploys
82 X       print -n "Waiting until fully deployed or $maxdelay seconds / CLI calls "
83 X       while (( !found && (++i < maxdelay) )); do
84 X               sleep 1
85 X               print -n .
86 X               deploys=$("$jbin"/jboss-cli.sh --connect \
87 X                   --command='ls /deployment' 2>/dev/null)
88 X               # require successful deployment of *all* jars
89 X               found=1
90 X               for deploy in activity-backend-ear.ear \
91 X                   activity-portlets.war activity-theme.war; do
92 X                       [[ $deploys = *"$deploy"* ]] && continue
93 X                       found=0
94 X                       break
95 X               done
96 X       done
97 X       if (( found )); then
98 X               print \ done
99 X               return 0
100 X       fi
101 X       print \ aborted!
102 X       return 1
103 X}
104 X
105 Xfunction do_stop {
106 X       print Stopping tarent-activity WildFly Application Server...
107 X       print
108 X       "$jbin"/jboss-cli.sh --connect :shutdown
109 X       # wait for 5..20 seconds
110 X       local i=0
111 X       while (( ++i < 5 )); do
112 X               sleep 5
113 X               [[ -s $jpid ]] || break
114 X               kill $(<$jpid)
115 X       done
116 X       [[ -s $jpid ]] || return 0
117 X       rm -f "$jpid"
118 X       return 1
119 X}
120 X
121 Xfunction do_status {
122 X       local pid
123 X
124 X       if [[ ! -e $jpid ]]; then
125 X               print PID file does not exist
126 X               exit 1
127 X       fi
128 X       if [[ ! -s $jpid ]]; then
129 X               print PID file is empty
130 X               exit 1
131 X       fi
132 X       pid=$(<$jpid)
133 X       if [[ $pid != +([0-9]) ]]; then
134 X               print PID file does not contain the PID
135 X               exit 1
136 X       fi
137 X       if ! kill -0 $pid; then
138 X               print Process $pid not running
139 X               rm -f "$jpid"
140 X               exit 1
141 X       fi
142 X       print Process $pid running
143 X       exit 0
144 X}
145 X
146 Xfunction do_log {
147 X       local lines
148 X
149 X       case $1 {
150 X       (-n|--lines)
151 X               lines=$2
152 X               shift 2
153 X               ;;
154 X       (--lines=*)
155 X               lines=${1#*=}
156 X               shift
157 X               ;;
158 X       }
159 X
160 X       exec tail -F ${lines:+--lines=$lines} "$jlog"
161 X}
162 X
163 Xcase $1 {
164 X(-h|--help)
165 X       usage 0
166 X       ;;
167 X(log)
168 X       shift
169 X       do_log "$@"
170 X       ;;
171 X(start)
172 X       shift
173 X       do_trigger s "$@"
174 X       do_wait || exit 1
175 X       ;;
176 X(status)
177 X       do_status
178 X       ;;
179 X(stop)
180 X       do_stop || exit 1
181 X       ;;
182 X(trigger_start)
183 X       do_trigger t
184 X       ;;
185 X(*)
186 X       usage
187 X       ;;
188 X}
189 Xexit 0
190 END-of-jboss-management/jboss.sh
191 echo x - jboss-management/taract.init
192 sed 's/^X//' >jboss-management/taract.init << 'END-of-jboss-management/taract.init'
193 X#!/bin/sh
194 X### BEGIN INIT INFO
195 X# Provides:          taract
196 X# Required-Start:    $local_fs $remote_fs $network $time postgresql networking
197 X# Required-Stop:     $local_fs $remote_fs $network $time postgresql networking
198 X# Should-Start:      $named mail-transport-agent ntp openntpd tarent-server
199 X# Should-Stop:       $named mail-transport-agent ntp openntpd
200 X# X-Start-Before:    apache2
201 X# X-Stop-After:      apache2
202 X# Default-Start:     2 3 4 5
203 X# Default-Stop:      0 1 6
204 X# Short-Description: tarent-activity
205 X# Description:       Init script for WildFly/Liferay used by tarent-activity
206 X### END INIT INFO
207 X#-
208 X# Copyright © 2013
209 X#      Thorsten “mirabilos” Glaser <t.glaser@tarent.de>
210 X# All rights reserved.
211 X#
212 X# Licenced under the GNU AGPLv3.
213 X
214 X# Absolute basic settings
215 XLC_ALL=C
216 XPATH=/sbin:/usr/sbin:/bin:/usr/bin
217 Xexport LC_ALL PATH
218 X
219 X# The following two lines are replaced by the taract installer:
220 Xbasedir='$INSTALL_PATH'
221 Xprtuser='$USER_NAME'
222 X
223 X# Internal functions
224 Xis_running() {
225 X       sudo -u "$prtuser" "$basedir/jboss.sh" status >/dev/null 2>&1
226 X}
227 X
228 Xdo_start() {
229 X       sudo -u "$prtuser" "$basedir/jboss.sh" start -q
230 X}
231 X
232 Xdo_stop() {
233 X       sudo -u "$prtuser" "$basedir/jboss.sh" stop >/dev/null 2>&1
234 X}
235 X
236 X# Exit cleanly if tarent-activity or dependencies are removed but not purged:
237 Xtest -x /bin/mksh || exit 0
238 Xtest -x /usr/bin/which || exit 0
239 Xfor dep in bash java sudo; do
240 X       test -n "$(which $dep)" || exit 0
241 X       test -x "$(which $dep)" || exit 0
242 Xdone
243 Xtest -x "$basedir/jboss.sh" || exit 0
244 X
245 X# Debian/LSB init script foobar
246 XDESC='tarent-activity'
247 XNAME=taract
248 X. /lib/init/vars.sh
249 X. /lib/lsb/init-functions
250 X
251 Xcase $1 in
252 X(start)
253 X       test x"$VERBOSE" = x"no" || log_daemon_msg "Starting $DESC" "$NAME"
254 X       if is_running; then
255 X               test x"$VERBOSE" = x"no" || log_end_msg 0
256 X       elif test x"$VERBOSE" = x"no"; then
257 X               do_start >/dev/null 2>&1
258 X       elif echo && do_start; then
259 X               log_end_msg 0
260 X       else
261 X               log_end_msg 1
262 X       fi
263 X       ;;
264 X(stop)
265 X       test x"$VERBOSE" = x"no" || log_daemon_msg "Stopping $DESC" "$NAME"
266 X       if is_running; then
267 X               if do_stop; then
268 X                       test x"$VERBOSE" = x"no" || log_end_msg 0
269 X               else
270 X                       test x"$VERBOSE" = x"no" || log_end_msg 1
271 X               fi
272 X       else
273 X               test x"$VERBOSE" = x"no" || log_end_msg 0
274 X       fi
275 X       ;;
276 X(status)
277 X       if is_running; then
278 X               test x"$VERBOSE" = x"no" || log_success_msg "$DESC is running"
279 X               exit 0
280 X       else
281 X               test x"$VERBOSE" = x"no" || log_success_msg "$DESC is not running"
282 X               exit 3
283 X       fi
284 X       ;;
285 X(restart|force-reload)
286 X       test x"$VERBOSE" = x"no" || log_daemon_msg "Restarting $DESC" "$NAME"
287 X       if is_running && ! do_stop; then
288 X               test x"$VERBOSE" = x"no" || log_end_msg 1
289 X       elif test x"$VERBOSE" = x"no"; then
290 X               do_start >/dev/null 2>&1
291 X       elif echo && do_start; then
292 X               log_end_msg 0
293 X       else
294 X               log_end_msg 1
295 X       fi
296 X       ;;
297 X(*)
298 X       echo >&2 "Usage: /etc/init.d/taract {start|stop|status|restart|force-reload}"
299 X       exit 3
300 X       ;;
301 Xesac
302 Xexit 0
303 END-of-jboss-management/taract.init
304 exit