summaryrefslogtreecommitdiffstats
path: root/heartbeat/jboss
diff options
context:
space:
mode:
Diffstat (limited to 'heartbeat/jboss')
-rwxr-xr-xheartbeat/jboss672
1 files changed, 672 insertions, 0 deletions
diff --git a/heartbeat/jboss b/heartbeat/jboss
new file mode 100755
index 0000000..948355a
--- /dev/null
+++ b/heartbeat/jboss
@@ -0,0 +1,672 @@
+#!/bin/sh
+#
+# Description: Manages a Jboss Server as an OCF High-Availability
+# resource under Heartbeat/LinuxHA control
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# Copyright (c) 2009 Bauer Systems KG / Stefan Schluppeck
+#
+#######################################################################
+# OCF parameters:
+# OCF_RESKEY_resource_name - The name of the resource. Default is ${OCF_RESOURCE_INSTANCE}
+# OCF_RESKEY_jboss_version - The version of JBoss. Default is 5.
+# why not let the RA log through lrmd?
+# 2009/09/09 Nakahira:
+# jboss_console is used to record output of the "run.sh".
+# The log of "Run.sh" should not be output to ha-log because it is so annoying.
+# OCF_RESKEY_console - A destination of the log of jboss run and shutdown script. Default is /var/log/${OCF_RESKEY_resource_name}.log
+# OCF_RESKEY_shutdown_timeout - Time-out at the time of the stop. Default is 5
+# OCF_RESKEY_kill_timeout - The re-try number of times awaiting a stop. Default is 10
+# OCF_RESKEY_user - A user name to start a JBoss. Default is root
+# OCF_RESKEY_statusurl - URL for state confirmation. Default is ${OCF_RESKEY_statusurl_default}
+# OCF_RESKEY_java_home - Home directory of the Java. Default is ${JAVA_HOME}
+# OCF_RESKEY_java_opts - Options for Java.
+# OCF_RESKEY_jboss_home - Home directory of Jboss. Default is None
+# is it possible to devise this string from options? I'm afraid
+# that allowing users to set this could be error prone.
+# 2009/09/09 Nakahira:
+# It is difficult to set it automatically because jboss_pstring
+# greatly depends on the environment. At any rate, system architect
+# should note that pstring doesn't influence other processes.
+# OCF_RESKEY_jboss_base_dir - Base directory of JBoss. Default is ${OCF_RESKEY_jboss_base_dir_default}
+# OCF_RESKEY_pstring - String Jboss will found in procceslist. Default is ${OCF_RESKEY_pstring_default}
+# OCF_RESKEY_run_command - JBoss start command. Default is "${OCF_RESKEY_run_command_default}"
+# OCF_RESKEY_run_opts - Options for jboss to run. Default is ${OCF_RESKEY_run_opts_default}
+# OCF_RESKEY_shutdown_opts - Options for jboss to shutdonw. Default is "-s 127.0.0.1:1099"
+# OCF_RESKEY_rotate_consolelog - Control console log logrotation flag. Default is false.
+# OCF_RESKEY_rotate_value - console log logrotation value. Default is 86400 span(seconds).
+# OCF_RESKEY_rotate_logsuffix - Control console log logrotation suffix. Default is .%F.
+###############################################################################
+
+
+: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat}
+. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs
+
+usage()
+{
+ cat <<-!
+usage: $0 action
+
+action:
+ start start jboss
+
+ stop stop the jboss
+
+ status return the status of jboss, run or down
+
+ monitor return TRUE if the jboss appears to be working.
+ You have to have installed $WGETNAME for this to work.
+
+ meta-data show meta data message
+
+ validate-all validate the instance parameters
+!
+ return $OCF_ERR_ARGS
+}
+
+isrunning_jboss()
+{
+ local rc
+ if [ -z "$1" ];then
+ ocf_run -q -err wget -t 1 -O /dev/null $STATUSURL
+ else
+ # Retry message for restraint
+ wget -t 1 -O /dev/null $STATUSURL 2>/dev/null
+ fi
+ rc=$?
+ if [ $rc -eq 0 ]; then
+ return $OCF_SUCCESS
+ fi
+ # JBoss service error
+ return $OCF_ERR_GENERIC
+}
+
+monitor_rotatelogs()
+{
+ pgrep -f "$ROTATELOGS.*$CONSOLE$ROTATELOG_SUFFIX" > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ ocf_log warn "A rotatelogs command for $CONSOLE is not running. Restarting it."
+ start_rotatelogs
+ if [ $? -eq 0 ]; then
+ ocf_log info "Restart rotatelogs process succeeded."
+ else
+ ocf_log warn "Restart rotatelogs process failed."
+ fi
+ fi
+}
+
+monitor_jboss()
+{
+ if ! pgrep -f "$PSTRING" > /dev/null; then
+ return $OCF_NOT_RUNNING
+ fi
+ isrunning_jboss $1
+ rc=$?
+ if [ $rc -ne $OCF_SUCCESS ]; then
+ return $rc
+ fi
+ if ocf_is_true $ROTATELOG_FLG; then
+ # Monitor rotatelogs process and restart it if it is stopped.
+ # And never consider rotatelogs process failure to be a monitor failure
+ # as long as JBoss process works fine.
+ monitor_rotatelogs
+ fi
+ return $OCF_SUCCESS
+}
+
+start_rotatelogs()
+{
+ su - -s /bin/sh $JBOSS_USER \
+ -c "$ROTATELOGS -l \"$CONSOLE$ROTATELOG_SUFFIX\" $ROTATEVALUE" \
+ < "$CONSOLE" > /dev/null 2>&1 &
+}
+
+rotate_console()
+{
+ # Check $CONSOLE$ROTATELOG_SUFFIX is writable or not.
+ CURRENT_ROTATELOG_SUFFIX=`date +"$ROTATELOG_SUFFIX"`
+ su - -s /bin/sh $JBOSS_USER \
+ -c "touch \"$CONSOLE$CURRENT_ROTATELOG_SUFFIX\"" > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ ocf_log err "$CONSOLE$CURRENT_ROTATELOG_SUFFIX is not writable."
+ return $OCF_ERR_GENERIC
+ fi
+
+ # Clean up and set permissions on required files
+ if [ -p "$CONSOLE" ]; then
+ rm -rf "$CONSOLE"
+ elif [ -e "$CONSOLE" ]; then
+ DATE=`date +"%F-%H%M%S"`
+ ocf_log warn "$CONSOLE already exists. It is saved as $CONSOLE-$DATE"
+ mv "$CONSOLE" "$CONSOLE-$DATE"
+ fi
+ mkfifo -m700 "$CONSOLE"
+ chown --dereference "$JBOSS_USER" "$CONSOLE" || true
+
+ start_rotatelogs
+}
+
+start_jboss()
+{
+ monitor_jboss start
+ if [ $? -eq $OCF_SUCCESS ]; then
+ ocf_log info "JBoss already running."
+ return $OCF_SUCCESS
+ fi
+
+ if ocf_is_true $ROTATELOG_FLG; then
+ rotate_console
+ if [ $? -eq 0 ]; then
+ ocf_log debug "Rotate console log succeeded."
+ else
+ ocf_log err "Rotate console log failed. Avoid starting jboss without console log rotation."
+ return $OCF_ERR_GENERIC
+ fi
+ fi
+
+ ocf_log info "Starting JBoss[$RESOURCE_NAME]"
+ if [ "$JBOSS_USER" = root ]; then
+ "$RUN_COMMAND" $RUN_OPTS \
+ >> "$CONSOLE" 2>&1 &
+ else
+ su - -s /bin/sh "$JBOSS_USER" \
+ -c "export JAVA_HOME=\"${JAVA_HOME}\"; \
+ export JAVA_OPTS=\"${JAVA_OPTS}\"; \
+ export JBOSS_HOME=\"${JBOSS_HOME}\"; \
+ export JBOSS_BASE_DIR=\"${JBOSS_BASE_DIR}\"; \
+ \"$RUN_COMMAND\" $RUN_OPTS" \
+ >> "$CONSOLE" 2>&1 &
+ fi
+
+ while true; do
+ monitor_jboss start
+ if [ $? -eq $OCF_SUCCESS ]; then
+ break
+ fi
+ ocf_log info "start_jboss[$RESOURCE_NAME]: retry monitor_jboss"
+ sleep 3
+ done
+
+ ocf_log info "JBoss[$RESOURCE_NAME] is started."
+ return $OCF_SUCCESS
+}
+
+output_thread_dump()
+{
+ ocf_log info "stop_jboss[$RESOURCE_NAME]: output a JVM thread dump to $CONSOLE"
+ pkill -QUIT -f "$PSTRING"
+}
+
+# arg1 : timeout
+# arg2 : send specified signal
+wait_process_exit()
+{
+ local lapse_sec=0
+ local timeout=$1
+ local signal=$2
+
+ while pgrep -f "$PSTRING" > /dev/null; do
+ sleep 1
+ lapse_sec=`expr $lapse_sec + 1`
+ if [ -n "$signal" ]; then
+ ocf_log info "stop_jboss[$RESOURCE_NAME]: kill jboss by SIG$signal ($lapse_sec/$timeout)"
+ pkill -$signal -f "$PSTRING"
+ else
+ ocf_log info "stop_jboss[$RESOURCE_NAME]: stop NORM $lapse_sec/$timeout"
+ fi
+ if [ "$timeout" -ne 0 -a $lapse_sec -ge $timeout ]; then
+ return 1
+ fi
+ done
+ return 0
+}
+
+stop_jboss5()
+{
+ if [ "$JBOSS_USER" = root ]; then
+ "$JBOSS_HOME/bin/shutdown.sh" $SHUTDOWN_OPTS -S \
+ >> "$CONSOLE" 2>&1 &
+ else
+ su - -s /bin/sh "$JBOSS_USER" \
+ -c "export JAVA_HOME=\"${JAVA_HOME}\"; \
+ export JBOSS_HOME=\"${JBOSS_HOME}\"; \
+ \"$JBOSS_HOME/bin/shutdown.sh\" $SHUTDOWN_OPTS -S" \
+ >> "$CONSOLE" 2>&1 &
+ fi
+ if ! wait_process_exit $SHUTDOWN_TIMEOUT; then
+ output_thread_dump
+ if ! wait_process_exit $KILL_TIMEOUT TERM; then
+ return 1
+ fi
+ fi
+ return 0
+}
+
+stop_jboss6()
+{
+ pkill -TERM -f "$PSTRING"
+
+ if ! wait_process_exit $SHUTDOWN_TIMEOUT; then
+ output_thread_dump
+ return 1
+ fi
+ return 0
+}
+
+stop_jboss()
+{
+ local rc
+
+ if ! pgrep -f "$PSTRING" > /dev/null; then
+ ocf_log info "JBoss[$RESOURCE_NAME] is already stopped."
+ else
+ ocf_log info "Stopping JBoss[$RESOURCE_NAME]"
+ # JBoss5 : shutdonw.sh -> SIGQUIT(output thread dump) -> SIGTERM
+ # If the JBoss process hangs, JBoss RA waits $SHUTDOWN_TIMEOUT
+ # seconds and tries kill TERM and QUIT for $KILL_TIMEOUT seconds.
+ # JBoss6 : SIGTERM -> SIGQUIT(output thread dump)
+ # If the JBoss process hangs, JBoss RA waits $SHUTDOWN_TIMEOUT
+ # seconds and tries kill QUIT.
+ if [ "$JBOSS_VERSION" -le 5 ]; then
+ stop_jboss5
+ rc=$?
+ else
+ stop_jboss6
+ rc=$?
+ fi
+ if [ $rc -ne 0 ]; then
+ # JBoss5
+ # The stop timeout of RA should be
+ # longer than $SHUTDOWN_TIMEOUT + $KILL_TIMEOUT.
+ # JBoss6
+ # The stop timeout of RA should be longer than $SHUTDOWN_TIMEOUT.
+ wait_process_exit 0 KILL
+ fi
+ ocf_log info "JBoss[$RESOURCE_NAME] is stopped."
+ fi
+
+ if ocf_is_true $ROTATELOG_FLG; then
+ rm -f "${CONSOLE}"
+ fi
+
+ return $OCF_SUCCESS
+}
+
+status_jboss()
+{
+ if ! pgrep -f "$PSTRING" > /dev/null; then
+ echo "JBoss process[$RESOURCE_NAME] is not running."
+ return $OCF_NOT_RUNNING
+ fi
+
+ if isrunning_jboss; then
+ echo "JBoss[$RESOURCE_NAME] is running."
+ return $OCF_SUCCESS
+ else
+ echo "JBoss process[$RESOURCE_NAME] is running."
+ echo "But, we can not access JBoss web service."
+ return $OCF_NOT_RUNNING
+ fi
+}
+
+
+metadata_jboss()
+{
+ cat <<END
+<?xml version="1.0"?>
+<!DOCTYPE resource-agent SYSTEM "ra-api-1.dtd">
+<resource-agent name="jboss" version="1.0">
+<version>1.0</version>
+
+<longdesc lang="en">
+Resource script for Jboss. It manages a Jboss instance as an HA resource.
+</longdesc>
+<shortdesc lang="en">Manages a JBoss application server instance</shortdesc>
+
+<parameters>
+
+<parameter name="jboss_version" unique="0" required="0">
+<longdesc lang="en">
+The version of JBoss. Default is ${OCF_RESKEY_jboss_version_default}.
+The usage of JBoss was greatly changed as of JBoss 6.
+Specify "6" when you use JBoss 6.
+</longdesc>
+<shortdesc lang="en">The version of JBoss</shortdesc>
+<content type="integer" default="${OCF_RESKEY_jboss_version_default}" />
+</parameter>
+
+<parameter name="resource_name" unique="1" required="0">
+<longdesc lang="en">
+The name of the resource. Defaults to the name of the resource
+instance.
+</longdesc>
+<shortdesc lang="en">The name of the resource</shortdesc>
+<content type="string" default="${OCF_RESOURCE_INSTANCE}" />
+</parameter>
+
+<parameter name="console" unique="1" required="0">
+<longdesc lang="en">
+A destination of the log of jboss run and shutdown script.
+</longdesc>
+<shortdesc lang="en">jboss log path</shortdesc>
+<content type="string" default="${OCF_RESKEY_console_default}" />
+</parameter>
+
+<parameter name="shutdown_timeout" unique="0" required="0">
+<longdesc lang="en">
+Timeout for jboss bin/shutdown.sh. We wait for this timeout to
+expire, then send the TERM and QUIT signals. Finally, the KILL
+signal is used to terminate the jboss process. You should set the
+timeout for the stop operation to a value bigger than the sum of
+the timeout parameters. See also kill_timeout.
+</longdesc>
+<shortdesc lang="en">shutdown timeout</shortdesc>
+<content type="integer" default="${OCF_RESKEY_shutdown_timeout_default}" />
+</parameter>
+
+<parameter name="kill_timeout" unique="0" required="0">
+<longdesc lang="en">
+If bin/shutdown.sh doesn't stop the jboss process, then we send
+it TERM and QUIT signals, intermittently and once a second. After
+this timeout expires, if the process is still live, we use the
+KILL signal. See also shutdown_timeout.
+</longdesc>
+<shortdesc lang="en">stop by signal timeout</shortdesc>
+<content type="integer" default="${OCF_RESKEY_kill_timeout_default}" />
+</parameter>
+
+<parameter name="user" unique="0" required="0">
+<longdesc lang="en">
+A user name to start a JBoss.
+</longdesc>
+<shortdesc lang="en">A user name to start a resource.</shortdesc>
+<content type="string" default="${OCF_RESKEY_user_default}"/>
+</parameter>
+
+<parameter name="statusurl" unique="0" required="0">
+<longdesc lang="en">
+URL to test in the monitor operation.
+</longdesc>
+<shortdesc lang="en">URL to test in the monitor operation.</shortdesc>
+<content type="string" default="${OCF_RESKEY_statusurl_default}" />
+</parameter>
+
+<parameter name="java_home" unique="0" required="0">
+<longdesc lang="en">
+Home directory of Java. Defaults to the environment variable
+JAVA_HOME. If it is not set, then define this parameter.
+</longdesc>
+<shortdesc lang="en">Home directory of Java.</shortdesc>
+<content type="string" default="$JAVA_HOME"/>
+</parameter>
+
+<parameter name="java_opts" unique="0" required="0">
+<longdesc lang="en">
+Java options.
+</longdesc>
+<shortdesc lang="en">Java options.</shortdesc>
+<content type="string" default="${OCF_RESKEY_java_opts_default}"/>
+</parameter>
+
+<parameter name="jboss_home" unique="0" required="1">
+<longdesc lang="en">
+Home directory of Jboss.
+</longdesc>
+<shortdesc lang="en">Home directory of Jboss.</shortdesc>
+<content type="string" default="${OCF_RESKEY_jboss_home_default}"/>
+</parameter>
+
+<parameter name="jboss_base_dir" unique="0" required="0">
+<longdesc lang="en">
+Base directory of JBoss. This parameter is not used in JBoss5.
+</longdesc>
+<shortdesc lang="en">Base directory of JBoss.</shortdesc>
+<content type="string" default="${OCF_RESKEY_jboss_base_dir_default}" />
+</parameter>
+
+<parameter name="pstring" unique="0" required="0">
+<longdesc lang="en">
+With this string heartbeat matches for the right process to kill.
+</longdesc>
+<shortdesc lang="en">pkill/pgrep search string</shortdesc>
+<content type="string" default="${OCF_RESKEY_pstring_default}" />
+</parameter>
+
+<parameter name="run_command" unique="0" required="0">
+<longdesc lang="en">
+JBoss start command.
+</longdesc>
+<shortdesc lang="en">JBoss start command.</shortdesc>
+<content type="string" default="${OCF_RESKEY_run_command_default}" />
+</parameter>
+
+<parameter name="run_opts" unique="0" required="0">
+<longdesc lang="en">
+Start options to start Jboss with, defaults are from the Jboss-Doku.
+</longdesc>
+<shortdesc lang="en">options for jboss run.sh</shortdesc>
+<content type="string" default="${OCF_RESKEY_run_opts_default}" />
+</parameter>
+
+<parameter name="shutdown_opts" unique="0" required="0">
+<longdesc lang="en">
+Stop options to stop Jboss with.
+</longdesc>
+<shortdesc lang="en">options for jboss shutdown.sh</shortdesc>
+<content type="string" default="${OCF_RESKEY_shutdown_opts_default}" />
+</parameter>
+
+<parameter name="rotate_consolelog" unique="0">
+<longdesc lang="en">
+Rotate console log flag.
+</longdesc>
+<shortdesc lang="en">Rotate console log flag</shortdesc>
+<content type="boolean" default="${OCF_RESKEY_rotate_consolelog_default}" />
+</parameter>
+
+<parameter name="rotate_value" unique="0">
+<longdesc lang="en">
+Console log rotation value (default is 86400 seconds).
+</longdesc>
+<shortdesc lang="en">Console log rotation value (default is 86400 seconds)</shortdesc>
+<content type="integer" default="${OCF_RESKEY_rotate_value_default}" />
+</parameter>
+
+<parameter name="rotate_logsuffix" unique="0">
+<longdesc lang="en">
+Rotate console log suffix.
+</longdesc>
+<shortdesc lang="en">Rotate console log suffix</shortdesc>
+<content type="integer" default="${OCF_RESKEY_rotate_logsuffix_default}" />
+</parameter>
+
+</parameters>
+
+<actions>
+<action name="start" timeout="60s" />
+<action name="stop" timeout="120s" />
+<action name="status" timeout="30s" />
+<action name="monitor" depth="0" timeout="30s" interval="10s" />
+<action name="meta-data" timeout="5s" />
+<action name="validate-all" timeout="5s"/>
+</actions>
+</resource-agent>
+END
+ return $OCF_SUCCESS
+}
+
+validate_all_jboss()
+{
+ if [ ! -d "$JAVA_HOME" ]; then
+ ocf_log err "JAVA_HOME does not exist."
+ return $OCF_ERR_INSTALLED
+ fi
+
+ if [ ! -d "$JBOSS_HOME" ]; then
+ ocf_log err "JBOSS_HOME does not exist."
+ return $OCF_ERR_INSTALLED
+ fi
+
+ if [ "$JBOSS_VERSION" -gt 5 ]; then
+ if [ ! -d "$JBOSS_BASE_DIR" ]; then
+ ocf_log err "JBOSS_BASE_DIR does not exist."
+ return $OCF_ERR_INSTALLED
+ fi
+ fi
+
+ if [ ! -x "$JAVA" ]; then
+ ocf_log err "java command does not exist."
+ return $OCF_ERR_INSTALLED
+ fi
+
+ if ocf_is_true $ROTATELOG_FLG; then
+ if [ ! -x "$ROTATELOGS" ]; then
+ ocf_log err "rotatelogs command does not exist."
+ return $OCF_ERR_INSTALLED
+ fi
+ fi
+
+ return $OCF_SUCCESS
+}
+
+# Parameter defaults
+
+OCF_RESKEY_jboss_version_default="5"
+OCF_RESKEY_console_default="/var/log/${OCF_RESOURCE_INSTANCE}.log"
+OCF_RESKEY_shutdown_timeout_default="5"
+OCF_RESKEY_kill_timeout_default="10"
+OCF_RESKEY_user_default="root"
+OCF_RESKEY_java_opts_default=""
+OCF_RESKEY_jboss_home_default=""
+OCF_RESKEY_shutdown_opts_default="-s 127.0.0.1:1099"
+OCF_RESKEY_rotate_consolelog_default="false"
+OCF_RESKEY_rotate_value_default="86400"
+OCF_RESKEY_rotate_logsuffix_default=".%F"
+
+COMMAND=$1
+JBOSS_VERSION="${OCF_RESKEY_jboss_version-${OCF_RESKEY_jboss_version_default}}"
+if ! ocf_is_decimal $JBOSS_VERSION; then
+ ocf_log err "Invalid parameter value: jboss_version [$JBOSS_VERSION]"
+ return $OCF_ERR_ARGS
+fi
+# Setting of the default value
+if [ "$JBOSS_VERSION" -le 5 ]; then
+ OCF_RESKEY_statusurl_default="http://127.0.0.1:8080"
+ OCF_RESKEY_pstring_default="java -Dprogram.name=run.sh"
+ OCF_RESKEY_run_command_default="${OCF_RESKEY_jboss_home}/bin/run.sh"
+ OCF_RESKEY_run_opts_default="-c default"
+else
+ OCF_RESKEY_jboss_base_dir_default="${OCF_RESKEY_jboss_home}/standalone"
+ JBOSS_BASE_DIR="${OCF_RESKEY_jboss_base_dir-${OCF_RESKEY_jboss_base_dir_default}}"
+ OCF_RESKEY_statusurl_default="http://127.0.0.1:9990"
+ OCF_RESKEY_pstring_default="java.*-Djboss.server.base.dir=${JBOSS_BASE_DIR}( .*)?$"
+ OCF_RESKEY_run_command_default="${OCF_RESKEY_jboss_home}/bin/standalone.sh"
+ OCF_RESKEY_run_opts_default=""
+fi
+RESOURCE_NAME="${OCF_RESKEY_resource_name-${OCF_RESOURCE_INSTANCE}}"
+CONSOLE="${OCF_RESKEY_console-/var/log/${RESOURCE_NAME}.log}"
+SHUTDOWN_TIMEOUT="${OCF_RESKEY_shutdown_timeout-${OCF_RESKEY_shutdown_timeout_default}}"
+KILL_TIMEOUT="${OCF_RESKEY_kill_timeout-${OCF_RESKEY_kill_timeout_default}}"
+JBOSS_USER="${OCF_RESKEY_user-${OCF_RESKEY_user_default}}"
+STATUSURL="${OCF_RESKEY_statusurl-${OCF_RESKEY_statusurl_default}}"
+PSTRING="${OCF_RESKEY_pstring-${OCF_RESKEY_pstring_default}}"
+RUN_OPTS="${OCF_RESKEY_run_opts-${OCF_RESKEY_run_opts_default}}"
+SHUTDOWN_OPTS="${OCF_RESKEY_shutdown_opts-${OCF_RESKEY_shutdown_opts_default}}"
+ROTATELOG_FLG="${OCF_RESKEY_rotate_consolelog-${OCF_RESKEY_rotate_consolelog_default}}"
+ROTATEVALUE="${OCF_RESKEY_rotate_value-${OCF_RESKEY_rotate_value_default}}"
+ROTATELOG_SUFFIX="${OCF_RESKEY_rotate_logsuffix-${OCF_RESKEY_rotate_logsuffix_default}}"
+
+if [ $# -ne 1 ]; then
+ usage
+ exit $OCF_ERR_ARGS
+fi
+
+if [ "$COMMAND" = "meta-data" ]; then
+ metadata_jboss
+ exit $OCF_SUCCESS
+fi
+if [ "$COMMAND" = "help" -o "$COMMAND" = "usage" ]; then
+ usage
+ exit $OCF_SUCCESS
+fi
+
+# test if these two are set and if directories exist and if the
+# required scripts/binaries exist; use OCF_ERR_INSTALLED
+JAVA_HOME="${OCF_RESKEY_java_home-${JAVA_HOME}}"
+JAVA_OPTS="${OCF_RESKEY_java_opts}"
+JBOSS_HOME="${OCF_RESKEY_jboss_home}"
+RUN_COMMAND="${OCF_RESKEY_run_command-${OCF_RESKEY_run_command_default}}"
+
+LSB_STATUS_STOPPED=3
+
+export JAVA_HOME JAVA_OPTS JBOSS_HOME JBOSS_BASE_DIR
+
+JAVA=${JAVA_HOME}/bin/java
+
+ROTATELOGS=""
+if ocf_is_true $ROTATELOG_FLG; then
+ # Look for rotatelogs/rotatelogs2
+ if [ -x /usr/sbin/rotatelogs ]; then
+ ROTATELOGS=/usr/sbin/rotatelogs
+ elif [ -x /usr/sbin/rotatelogs2 ]; then
+ ROTATELOGS=/usr/sbin/rotatelogs2
+ fi
+fi
+
+validate_all_jboss
+rc=$?
+
+[ "$COMMAND" = "validate-all" ] && exit $rc
+
+if [ $rc -ne 0 ]; then
+ case $COMMAND in
+ stop) exit $OCF_SUCCESS;;
+ monitor) exit $OCF_NOT_RUNNING;;
+ status) exit $LSB_STATUS_STOPPED;;
+ *) exit $rc;;
+ esac
+fi
+
+case "$COMMAND" in
+ start)
+ start_jboss
+ func_status=$?
+ exit $func_status
+ ;;
+ stop)
+ stop_jboss
+ func_status=$?
+ exit $func_status
+ ;;
+ status)
+ status_jboss
+ exit $?
+ ;;
+ monitor)
+ monitor_jboss
+ func_status=$?
+ exit $func_status
+ ;;
+ validate-all)
+ validate_all_jboss
+ exit $?
+ ;;
+ *)
+ usage
+ exit $OCF_ERR_UNIMPLEMENTED;;
+esac
+