You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by lu...@apache.org on 2014/10/30 21:34:25 UTC

svn commit: r1635608 - /directory/apacheds/trunk/installers-maven-plugin/src/main/resources/org/apache/directory/server/installers/archive/apacheds.sh

Author: lucastheisen
Date: Thu Oct 30 20:34:25 2014
New Revision: 1635608

URL: http://svn.apache.org/r1635608
Log:
added status action and externalized setenv.sh

Modified:
    directory/apacheds/trunk/installers-maven-plugin/src/main/resources/org/apache/directory/server/installers/archive/apacheds.sh

Modified: directory/apacheds/trunk/installers-maven-plugin/src/main/resources/org/apache/directory/server/installers/archive/apacheds.sh
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/installers-maven-plugin/src/main/resources/org/apache/directory/server/installers/archive/apacheds.sh?rev=1635608&r1=1635607&r2=1635608&view=diff
==============================================================================
--- directory/apacheds/trunk/installers-maven-plugin/src/main/resources/org/apache/directory/server/installers/archive/apacheds.sh (original)
+++ directory/apacheds/trunk/installers-maven-plugin/src/main/resources/org/apache/directory/server/installers/archive/apacheds.sh Thu Oct 30 20:34:25 2014
@@ -18,13 +18,44 @@
 #  under the License.
 #
 
+# -----------------------------------------------------------------------------
+# Control Script for the ApacheDS Server
+#
+# Environment Variable Prerequisites
+#
+#   Do not set the variables in this script. Instead put them into a script
+#   setenv.sh in CATALINA_BASE/bin to keep your customizations separate.
+#
+#   ADS_HOME        (Optional) The directory that contains your apacheds 
+#                   install.  Defaults to the parent directory of the
+#                   directory containing this script.
+#
+#   ADS_INSTANCES   (Optional) The parent directory for the instances.
+#                   Defaults to $ADS_HOME/instances.
+#
+#   ADS_CONTROLS    Controls to register.
+#
+#   ADS_EXTENDED_OPERATIONS
+#                   Extended operations to register.
+#
+#   JAVA_HOME       (Optional) The java installation directory.  If not
+#                   not specified, the java from $PATH will be used.
+#
+#   JAVA_OPTS       (Optional) Any additional java options (ex: -Xms:256m)
+
 # Detect ads home (http://stackoverflow.com/a/630387/516433)
-ADS_HOME="`dirname \"$0\"`"
-ADS_HOME="`(cd \"$ADS_HOME/..\" && pwd)`"
+PROGRAM_DIR="`dirname \"$0\"`"
+[ -z "$ADS_HOME" ] && ADS_HOME="`(cd \"$PROGRAM_DIR/..\" && pwd)`"
 if [ -z "$ADS_HOME" ]; then
+    echo "Unable to detect ADS_HOME, and not specified"
     exit 1
 fi
 
+HAVE_TTY=0
+if [ "`tty`" != "not a tty" ]; then
+    HAVE_TTY=1
+fi
+
 # OS sepecific support
 cygwin=false
 case "`uname`" in
@@ -52,6 +83,8 @@ else
     exit 1
 fi
 
+[ -r "$ADS_HOME/bin/setenv.sh" ] && . "$ADS_HOME/bin/setenv.sh"
+
 # For cygwin, ensure paths or in unix format before touched
 if $cygwin; then
     [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
@@ -59,6 +92,8 @@ if $cygwin; then
     [ -n "$ADS_INSTANCES" ] && ADS_INSTANCES=`cygpath --unix "$ADS_INSTANCES"`
 fi
 
+[ -z "$ADS_INSTANCES" ] && ADS_INSTANCES="$ADS_HOME/instances"
+
 RUN_JAVA=
 if [ -z "$JAVA_HOME" ]; then
     RUN_JAVA=$(which java)
@@ -69,12 +104,7 @@ fi
 # Build the classpath (http://stackoverflow.com/a/4729899/516433)
 CLASSPATH=$(JARS=("$ADS_HOME"/lib/*.jar); IFS=:; echo "${JARS[*]}")
 
-ADS_INSTANCE=
-if [ -z "$ADS_INSTANCES" ]; then
-    ADS_INSTANCE="$ADS_HOME/instances/$ADS_INSTANCE_NAME"
-else
-    ADS_INSTANCE="$ADS_INSTANCES/$ADS_INSTANCE_NAME"
-fi
+ADS_INSTANCE="$ADS_INSTANCES/$ADS_INSTANCE_NAME"
 
 ADS_OUT="$ADS_INSTANCE/log/apacheds.out"
 ADS_PID="$ADS_INSTANCE/run/apacheds.pid"
@@ -88,13 +118,27 @@ if $cygwin; then
     CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
 fi
 
-ADS_CONTROLS="-Dapacheds.controls=org.apache.directory.api.ldap.codec.controls.cascade.CascadeFactory,org.apache.directory.api.ldap.codec.controls.manageDsaIT.ManageDsaITFactory,org.apache.directory.api.ldap.codec.controls.search.entryChange.EntryChangeFactory,org.apache.directory.api.ldap.codec.controls.search.pagedSearch.PagedResultsFactory,org.apache.directory.api.ldap.codec.controls.search.persistentSearch.PersistentSearchFactory,org.apache.directory.api.ldap.codec.controls.search.subentries.SubentriesFactory,org.apache.directory.api.ldap.extras.controls.ppolicy_impl.PasswordPolicyFactory,org.apache.directory.api.ldap.extras.controls.syncrepl_impl.SyncDoneValueFactory,org.apache.directory.api.ldap.extras.controls.syncrepl_impl.SyncInfoValueFactory,org.apache.directory.api.ldap.extras.controls.syncrepl_impl.SyncRequestValueFactory,org.apache.directory.api.ldap.extras.controls.syncrepl_impl.SyncStateValueFactory"
+[ -z "$ADS_CONTROLS" ] && ADS_CONTROLS="-Dapacheds.controls=org.apache.directory.api.ldap.codec.controls.cascade.CascadeFactory,org.apache.directory.api.ldap.codec.controls.manageDsaIT.ManageDsaITFactory,org.apache.directory.api.ldap.codec.controls.search.entryChange.EntryChangeFactory,org.apache.directory.api.ldap.codec.controls.search.pagedSearch.PagedResultsFactory,org.apache.directory.api.ldap.codec.controls.search.persistentSearch.PersistentSearchFactory,org.apache.directory.api.ldap.codec.controls.search.subentries.SubentriesFactory,org.apache.directory.api.ldap.extras.controls.ppolicy_impl.PasswordPolicyFactory,org.apache.directory.api.ldap.extras.controls.syncrepl_impl.SyncDoneValueFactory,org.apache.directory.api.ldap.extras.controls.syncrepl_impl.SyncInfoValueFactory,org.apache.directory.api.ldap.extras.controls.syncrepl_impl.SyncRequestValueFactory,org.apache.directory.api.ldap.extras.controls.syncrepl_impl.SyncStateValueFactory"
 
-ADS_EXTENDED_OPERATIONS="-Dapacheds.extendedOperations=org.apache.directory.api.ldap.extras.extended.ads_impl.cancel.CancelFactory,org.apache.directory.api.ldap.extras.extended.ads_impl.certGeneration.CertGenerationFactory,org.apache.directory.api.ldap.extras.extended.ads_impl.gracefulShutdown.GracefulShutdownFactory,org.apache.directory.api.ldap.extras.extended.ads_impl.storedProcedure.StoredProcedureFactory,org.apache.directory.api.ldap.extras.extended.ads_impl.gracefulDisconnect.GracefulDisconnectFactory"
+[ -z "$ADS_EXTENDED_OPERATIONS" ] && ADS_EXTENDED_OPERATIONS="-Dapacheds.extendedOperations=org.apache.directory.api.ldap.extras.extended.ads_impl.cancel.CancelFactory,org.apache.directory.api.ldap.extras.extended.ads_impl.certGeneration.CertGenerationFactory,org.apache.directory.api.ldap.extras.extended.ads_impl.gracefulShutdown.GracefulShutdownFactory,org.apache.directory.api.ldap.extras.extended.ads_impl.storedProcedure.StoredProcedureFactory,org.apache.directory.api.ldap.extras.extended.ads_impl.gracefulDisconnect.GracefulDisconnectFactory"
+
+if [ $HAVE_TTY -eq 1 ]; then
+    echo "Using ADS_HOME:    $ADS_HOME"
+    echo "Using JAVA_HOME:   $JAVA_HOME"
+    echo ""
+fi
 
 if [ "$ADS_ACTION" = "start" ]; then
     # Printing instance information
-    echo "Starting ApacheDS instance '$ADS_INSTANCE_NAME'..."
+    [ $HAVE_TTY -eq 1 ] && echo "Starting ApacheDS instance '$ADS_INSTANCE_NAME'..."
+
+    if [ -f $ADS_PID ]; then
+        PID=`cat $ADS_PID`
+        if kill -0 $PID > /dev/null 2>&1; then
+            echo "ApacheDS is already running as $PID"
+            exit 0
+        fi
+    fi
 
     # Launching ApacheDS
     eval "\"$RUN_JAVA\"" $JAVA_OPTS $ADS_CONTROLS $ADS_EXTENDED_OPERATIONS \
@@ -106,7 +150,7 @@ if [ "$ADS_ACTION" = "start" ]; then
     echo $! > "$ADS_PID"
 elif [ "$ADS_ACTION" = "run" ]; then
     # Printing instance information
-    echo "Running ApacheDS instance '$ADS_INSTANCE_NAME'..."
+    [ $HAVE_TTY -eq 1 ] && echo "Running ApacheDS instance '$ADS_INSTANCE_NAME'..."
 
     # Launching ApacheDS
     eval "\"$RUN_JAVA\"" $JAVA_OPTS $ADS_CONTROLS $ADS_EXTENDED_OPERATIONS \
@@ -114,10 +158,37 @@ elif [ "$ADS_ACTION" = "run" ]; then
         -Dapacheds.log.dir="\"$ADS_INSTANCE/log\"" \
         -classpath "\"$CLASSPATH\"" \
         org.apache.directory.server.UberjarMain "\"$ADS_INSTANCE\""
+elif [ "$ADS_ACTION" = "status" ]; then
+    if [ -f $ADS_PID ]; then
+        PID=`cat $ADS_PID`
+        if kill -0 $PID > /dev/null 2>&1; then
+            echo "ApacheDS is running as $PID"
+        else
+            echo "ApacheDS is not running"
+        fi
+    else
+        [ $HAVE_TTY -eq 1 ] && echo "ApacheDS is not running"
+    fi
 elif [ "$ADS_ACTION" = "stop" ]; then
     # Printing instance information
-    PID=`cat $ADS_PID`
-    echo "Stoping ApacheDS instance '$ADS_INSTANCE_NAME' running as $PID"
-
-    kill $PID
+    if [ -f $ADS_PID ]; then
+        PID=`cat $ADS_PID`
+        [ $HAVE_TTY -eq 1 ] && echo "Stoping ApacheDS instance '$ADS_INSTANCE_NAME' running as $PID"
+
+        kill -15 $PID > /dev/null 2>&1
+
+        ATTEMPTS_REMAINING=10
+        while [ $ATTEMPTS_REMAINING > 0 ]; do
+            kill -0 $PID > /dev/null 2>&1 -gt 0
+            if [ $? > 0 ]; then
+                rm -f $ADS_PID > /dev/null 2>&1
+                [ $HAVE_TTY -eq 1 ] && echo "ApacheDS instance '$ADS_INSTANCE_NAME' stopped successfully"
+                break
+            fi
+            sleep 1
+            ATTEMPTS_REMAINING=`expr $ATTEMPTS_REMAINING - 1`
+        done
+    else
+        [ $HAVE_TTY -eq 1 ] && echo "ApacheDS is not running, $ADS_PID does not exist"
+    fi
 fi