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/05/03 14:28:05 UTC
svn commit: r1592192 -
/directory/apacheds/trunk/installers-maven-plugin/src/main/resources/org/apache/directory/server/installers/archive/apacheds.sh
Author: lucastheisen
Date: Sat May 3 12:28:04 2014
New Revision: 1592192
URL: http://svn.apache.org/r1592192
Log:
Updated apacheds.sh to detect apacheds root (rather than assuming the script was run from the bin directory itself), provide start and stop methods, and added cygwin support.
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=1592192&r1=1592191&r2=1592192&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 Sat May 3 12:28:04 2014
@@ -18,51 +18,100 @@
# under the License.
#
-# Checking the number of parameters
-if [ $# -eq 0 ]
+# Detect ads home (http://stackoverflow.com/a/630387/516433)
+ADS_HOME="`dirname \"$0\"`"
+ADS_HOME="`(cd \"$ADS_HOME/..\" && pwd)`"
+if [ -z "$ADS_HOME" ]; then
+ exit 1;
+fi
+
+# OS sepecific support
+cygwin=false
+case "`uname`" in
+ CYGWIN*) cygwin=true
+esac
+
+# Checking the parameters
+ADS_INSTANCE_NAME=
+ADS_ACTION=
+if [ $# -eq 1 ]
then
# Using 'default' as default instance name
ADS_INSTANCE_NAME="default"
-elif [ $# -eq 1 ]
+ ADS_ACTION=$1
+elif [ $# -eq 2 ]
then
# Getting the instance name from the arguments
ADS_INSTANCE_NAME=$1
+ ADS_ACTION=$2
else
# Printing usage information
- echo "Usage: apacheds.sh <instance name>"
+ echo "Usage: apacheds.sh [<instance name>] <action>"
echo "If <instance name> is ommited, 'default' will be used."
+ echo "<action> is one of start, stop."
exit 1
fi
-# Printing instance information
-echo "Starting ApacheDS instance '$ADS_INSTANCE_NAME'..."
+# For cygwin, ensure paths or in unix format before touched
+if $cygwin; then
+ [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+ [ -n "$ADS_HOME" ] && ADS_HOME=`cygpath --unix "$ADS_HOME"`
+fi
-# Getting the fully qualified path to the script
-case $0 in
- /*)
- SCRIPT="$0"
- ;;
- ./*)
- SCRIPT="`pwd`/`echo $0 | sed -e 's/^[ ]*\.\///'`"
- ;;
- *)
- SCRIPT="`pwd`/`echo $0 | sed -e 's/^[ ]*//'`"
- ;;
-esac
-
-# Getting the working directory of the script
-ADS_PWD=`dirname $SCRIPT`/..
-
-# Building dynamically the classpath
-ADS_CP=
-for i in `ls $ADS_PWD/lib/`
-do
- ADS_CP=${ADS_CP}:$ADS_PWD/lib/${i}
-done
+RUN_JAVA="$JAVA_HOME"/bin/java
-ADS_CONTROLS="-Dapacheds.controls="
+# Build the classpath (http://stackoverflow.com/a/4729899/516433)
+CLASSPATH=$(JARS=("$ADS_HOME"/lib/*.jar); IFS=:; echo "${JARS[*]}")
-ADS_EXTENDED_OPERATIONS="-Dapacheds.extendedOperations="
+mkdir -p "$ADS_HOME/instances/$ADS_INSTANCE_NAME/log"
+mkdir -p "$ADS_HOME/instances/$ADS_INSTANCE_NAME/run"
+ADS_OUT="$ADS_HOME/instances/$ADS_INSTANCE_NAME/log/apacheds.out"
+ADS_PID="$ADS_HOME/instances/$ADS_INSTANCE_NAME/run/apacheds.pid"
+
+# For cygwin, switch to windows paths before running
+if $cygwin; then
+ JAVA_HOME=`cygpath --absolute --windows "$JAVA_HOME"`
+ ADS_HOME=`cygpath --absolute --windows "$ADS_HOME"`
+ CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
+fi
-# Launching ApacheDS
-java $JAVA_OPTS $ADS_CONTROLS $ADS_EXTENDED_OPERATIONS -Dlog4j.configuration=file:$ADS_PWD/instances/$ADS_INSTANCE_NAME/conf/log4j.properties -Dapacheds.log.dir=$ADS_PWD/instances/$ADS_INSTANCE_NAME/log -cp $ADS_CP org.apache.directory.server.UberjarMain $ADS_PWD/instances/$ADS_INSTANCE_NAME
\ No newline at end of file
+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"
+
+if [ "$ADS_ACTION" = "start" ]; then
+ # Printing instance information
+ echo "Starting ApacheDS instance '$ADS_INSTANCE_NAME'..."
+
+ if [ -f "$ADS_PID" ]; then
+ PID=`cat "$ADS_PID"`
+ ps -p $PID > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ echo "ApacheDS appears to still be running with PID $PID. Start aborted."
+ exit 1;
+ fi
+ fi
+
+ # Launching ApacheDS
+ eval "\"$RUN_JAVA\"" $JAVA_OPTS $ADS_CONTROLS $ADS_EXTENDED_OPERATIONS \
+ -Dlog4j.configuration="\"file:$ADS_HOME/instances/$ADS_INSTANCE_NAME/conf/log4j.properties\"" \
+ -Dapacheds.log.dir="\"$ADS_HOME/instances/$ADS_INSTANCE_NAME/log\"" \
+ -classpath "\"$CLASSPATH\"" \
+ org.apache.directory.server.UberjarMain "\"$ADS_HOME/instances/$ADS_INSTANCE_NAME\"" \
+ > "$ADS_OUT" 2>&1 "&"
+ echo $! > "$ADS_PID"
+elif [ "$ADS_ACTION" = "stop" ]; then
+ # Printing instance information
+ echo "Stopping ApacheDS instance '$ADS_INSTANCE_NAME'..."
+
+ if [ -f "$ADS_PID" ]; then
+ PID=`cat "$ADS_PID"`
+ kill -0 $PID > /dev/null 2>&1
+ if [ $? = 0 ]; then
+ kill $PID
+ fi
+ rm -f $ADS_PID > /dev/null 2>&1
+ else
+ echo "$ADS_PID not found"
+ fi
+fi