Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

413 lines (391 sloc) 9.125 kb
#!/bin/sh
### BEGIN INIT INFO
# Provides: ofbiz
# Required-Start: $local_fs $remote_fs $network $time
# Required-Stop: $local_fs $remote_fs $network $time
# Should-Start: postgresql mysql exim4
# Should-Stop: postgresql mysql exim4
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: OfBiz container
### END INIT INFO
#Licensed to the Apache Software Foundation (ASF) under one
#or more contributor license agreements. See the NOTICE file
#distributed with this work for additional information
#regarding copyright ownership. The ASF licenses this file
#to you under the Apache License, Version 2.0 (the
#"License"); you may not use this file except in compliance
#with the License. You may obtain a copy of the License at
#
#http://www.apache.org/licenses/LICENSE-2.0
#
#Unless required by applicable law or agreed to in writing,
#software distributed under the License is distributed on an
#"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
#KIND, either express or implied. See the License for the
#specific language governing permissions and limitations
#under the License.
set -e
if ! [ -e "/usr/share/ofbiz/ofbiz.jar" ]; then
exit 0
fi
PATH=/bin:/usr/bin:/sbin:/usr/sbin
# set defaults
DEFAULT=/etc/default/ofbiz
JAVA_HOME=""
JAVA_HOMES="/usr/lib/jvm/java-6-sun"
MEMIF=""
UMASK=002
. /lib/lsb/init-functions
if [ -e /etc/default/rcS ]; then
. /etc/default/rcS
fi
if [ -e /etc/default/locale ]; then
. /etc/default/locale
export LANG
fi
# allow local admin to change defaults
if [ -e "$DEFAULT" ]; then
. "$DEFAULT"
fi
umask $UMASK
PATH=/bin:/usr/bin:/sbin:/usr/sbin
NAME=ofbiz
DESC="OfBiz Container"
OFBIZ_HOME=/usr/share/ofbiz
USER=ofbiz
PIDFILE=/var/run/ofbiz.pid
CLASS=org.ofbiz.base.start.Start
PROPS=""
if [ -f "/etc/ofbiz/debconf.cfg" ]; then
PROPS="$PROPS -Dofbiz.system.props=/etc/ofbiz/debconf.cfg"
fi
if [ "x$JAVA_HOME" = x ]; then
if [ "x$JAVA_HOMES" != x ]; then
for possible in $JAVA_HOMES; do
if [ -e "$possible/bin/java" ]; then
JAVA_HOME="$possible"
break
fi
done
fi
if [ "x$JAVA_HOME" = x ]; then
log_failure_msg "Couldn't find a java."
if [ "x$JAVA_HOMES" != x ]; then
log_failure_msg "Tried $JAVA_HOMES"
fi
exit 1
fi
fi
JAVA="$JAVA_HOME/bin/java"
CLASSPATH="$OFBIZ_HOME/ofbiz.jar:/usr/share/java/commons-daemon.jar"
run_ofbiz_cmd() {
(
cd "$OFBIZ_HOME"
"$JAVA" $PROPS -jar ofbiz.jar "$1"
)
}
if [ -z "$(which jsvc)" ]; then
jsvc() {
jsvc_jvm=""
jsvc_wait=""
jsvc_verbose_class=""
jsvc_verbose_gc=""
jsvc_verbose_jni=""
jsvc_pidfile=""
jsvc_detach=1
jsvc_user=""
jsvc_outfile="/dev/null"
jsvc_errfile="/dev/null"
jsvc_home=""
jsvc_cp=""
jsvc_extra=""
jsvc_stop=""
while [ $# -gt 0 ]; do
case "$1" in
(-version) ;;
(-help) ;;
(-?) ;;
(-check) ;;
(-jvm) jsvc_jvm="$2"; shift;;
(-wait) jsvc_wait="$2"; shift;;
(-stop) jsvc_stop=1;;
(-verbose:class) jsvc_verbose_class=1; shift;;
(-verbose:gc) jsvc_verbose_gc=1; shift;;
(-verbose:jni) jsvc_verbose_jni=1; shift;;
(-pidfile) jsvc_pidfile="$2"; shift;;
(-nodetach) jsvc_detach="";;
(-user) jsvc_user="$2"; shift;;
(-outfile) jsvc_outfile="$2"; shift;;
(-errfile) jsvc_errfile="$2"; shift;;
(-home) jsvc_home="$2"; shift;;
(-classpath) jsvc_cp="$2"; shift;;
(-cp) jsvc_cp="$2"; shift;;
(-D*) jsvc_extra="$jsvc_extra \"$1\"";;
(-X*) jsvc_extra="$jsvc_extra \"$1\"";;
(*) break;;
esac
shift
done
if ! [ "$jsvc_home" ]; then log_failure_msg "-home not set"; exit 1; fi
if ! [ "$jsvc_cp" ]; then log_failure_msg "-cp not set"; exit 1; fi
if [ "$jsvc_jvm" ]; then log_failure_msg "-jvm not supported"; exit 1; fi
if [ "$jsvc_wait" ]; then log_failure_msg "-wait not supported"; exit 1; fi
if [ "$jsvc_stop" ]; then log_failure_msg "-stop not supported"; exit 1; fi
jsvc_args=""
if [ "$jsvc_verbose_class" ]; then :; fi
if [ "$jsvc_verbose_gc" ]; then :; fi
if [ "$jsvc_verbose_jni" ]; then :; fi
jsvc_command_file=$(mktemp)
echo "#!/bin/sh" > "$jsvc_command_file"
chmod +x "$jsvc_command_file"
echo "rm -f \"$jsvc_command_file\"" >> "$jsvc_command_file"
if [ "$jsvc_pidfile" ]; then
touch "$jsvc_pidfile"
if [ "$jsvc_user" ]; then
chown "$jsvc_user" "$jsvc_pidfile"
fi
echo "echo \$\$ > \"$jsvc_pidfile\"" >> "$jsvc_command_file"
fi
echo "exec \"$JAVA\" -classpath \"$jsvc_cp\" $jsvc_extra $@" >> "$jsvc_command_file"
if [ "$jsvc_user" ]; then
chown "$jsvc_user" "$jsvc_command_file"
jsvc_command="su -c \"$jsvc_command_file\" -s \"/bin/sh\" \"$jsvc_user\""
else
jsvc_command="$jsvc_command_file"
fi
jsvc_command="$jsvc_command 1>\"$jsvc_outfile\" 2>\"$jsvc_errfile\""
if [ "$jsvc_detach" ]; then
eval $jsvc_command &
else
trap "rm -f \"$jsvc_command_file\"" EXIT
eval $jsvc_command
fi
return $?
}
fi
get_status() {
status="$(run_ofbiz_cmd -status 2>/dev/null | sed -n 's/^Current Status : //p')"
case "$status" in
(Running|Starting|Stopping|Not\ Running)
echo $status
;;
(*)
echo Not Running
;;
esac
}
wait_for_status() {
count="$1"
while :; do
if [ "$(get_status)" = "$2" ]; then
break;
fi
count=$(($count - 1))
if [ "$count" -eq 0 ]; then
log_failure_msg "Timeout waiting for $3"
exit 1
fi
log_begin_msg "."
sleep 1
done
}
ofbiz_shutdown() {
run_ofbiz_cmd -shutdown >/dev/null
}
wait_for_stop() {
wait_for_status 30 "Not Running" "stop"
count="10"
while :; do
if ! start-stop-daemon --pidfile "$PIDFILE" --exec /usr/bin/jsvc --user $USER --signal 0 --quiet --stop; then
break
fi
count=$(($count - 1))
if [ "$count" -eq 0 ]; then
log_failure_msg "Timeout waiting for stop"
exit 1
fi
log_begin_msg "."
sleep 1
done
}
start() {
case "$(get_status)" in
(Stopping)
log_progress_msg "(waiting for stop"
wait_for_stop
log_progress_msg ")"
;;
(Not\ Running)
;;
(Starting|Running)
log_progress_msg "(already running)"
return
;;
(*)
log_progress_msg "(forcing stop"
ofbiz_shutdown
wait_for_stop
log_progress_msg ")"
;;
esac
(
cd "$OFBIZ_HOME"
touch /var/log/ofbiz/ofbiz.log
chown ofbiz.ofbiz /var/log/ofbiz/ofbiz.log
jsvc -pidfile "$PIDFILE" \
-user $USER \
-outfile /var/log/ofbiz/console.log -errfile '&1' \
-home "$JAVA_HOME" -cp "$CLASSPATH" \
$PROPS \
$MEMIF \
$CLASS
)
wait_for_status 120 "Running" "start"
}
stop() {
case "$(get_status)" in
(Not\ Running)
;;
(*)
ofbiz_shutdown
;;
esac
wait_for_stop
if [ -e "$PIDFILE" ]; then
rm -f "$PIDFILE"
fi
}
install() {
case "$(get_status)" in
(Stopping)
log_progress_msg "(waiting for stop"
wait_for_stop
log_progress_msg ")"
;;
(Not\ Running)
;;
(Starting|Running)
log_failure_msg "(running, can't install)"
exit 1
;;
esac
(
cd "$OFBIZ_HOME"
touch /var/log/ofbiz/ofbiz.log
chown ofbiz.ofbiz /var/log/ofbiz/ofbiz.log
jsvc -pidfile "$PIDFILE" \
-nodetach \
-user $USER \
-outfile /dev/fd/3 -errfile '&1' \
-home "$JAVA_HOME" -cp "$CLASSPATH" \
$PROPS \
$MEMIF \
$CLASS \
install "$@" 3>&1 | \
tee -a /var/log/ofbiz/install.log
)
}
module_hook() {
files=""
result="0"
while [ $# -gt 0 ]; do
case "$1" in
(-file=*)
file="$(echo "$1" | sed 's/^-file=//')"
if ! [ -e "$file" ]; then
log_failure_msg "File $file does not exist"
result=1
else
files="$files,$file"
fi
;;
(-file)
file="$2"
if ! shift; then
log_failure_msg "No file specified"
result=1
elif ! [ -e "$file" ]; then
log_failure_msg "File $file does not exist"
result=1
else
files="$files,$file"
fi
;;
(*)
log_failure_msg "Unknown argument($1)"
exit 1
;;
esac
shift
done
if ! [ "$files" ]; then
return 0
elif [ "$result" eq 1 ]; then
return 1
fi
files="$(echo "$files" | cut -f 2- -d ,)"
was_running=""
case "$(get_status)" in
(Not\ Running)
;;
(Stopping)
wait_for_stop
;;
(*)
log_daemon_msg "Stopping $DESC" "$NAME"
ofbiz_shutdown
wait_for_stop
log_end_msg 0
was_running=1
;;
esac
cd "$OFBIZ_HOME"
if ! jsvc \
-user $USER -outfile /dev/tty -errfile '&1' -nodetach \
-home "$JAVA_HOME" -cp "$CLASSPATH" \
$CLASS install -file="$files"; then
log_failure_msg "Error installing files"
result=1
fi
if [ "$was_running" ]; then
log_daemon_msg "Starting $DESC" "$NAME"
start
log_end_msg 0
fi
return "$result"
}
cmd="$1"
shift || true
case "$cmd" in
(start)
log_daemon_msg "Starting $DESC" "$NAME"
start
log_end_msg 0
;;
(stop)
log_daemon_msg "Stopping $DESC" "$NAME"
stop
log_end_msg 0
;;
(install)
log_daemon_msg "Installing $DESC" "$NAME"
install "$@"
log_end_msg 0
;;
(reload|restart|force-reload)
log_daemon_msg "Restarting $DESC" "$NAME"
stop
start
log_end_msg 0
;;
(module-hook)
if ! module_hook "$@"; then
exit 1
fi
;;
(*)
log_success_msg "Usage: $0 {start|stop|install|reload|force-reload|restart"
exit 1
;;
esac
Jump to Line
Something went wrong with that request. Please try again.