[KARAF-4852] Improve unix shell scripts Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/d7a2185a Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/d7a2185a Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/d7a2185a
Branch: refs/heads/master Commit: d7a2185a7c73a06dbe1dfd58528bf854d264f496 Parents: 406c6f0 Author: Guillaume Nodet <[email protected]> Authored: Wed Dec 7 13:28:45 2016 +0100 Committer: Guillaume Nodet <[email protected]> Committed: Wed Dec 7 15:57:56 2016 +0100 ---------------------------------------------------------------------- .../filtered-resources/resources/bin/client | 282 +-------- .../filtered-resources/resources/bin/instance | 316 ++-------- .../main/filtered-resources/resources/bin/karaf | 303 ++++++++++ .../filtered-resources/resources/bin/karaf.bat | 428 ++++++++++++++ .../filtered-resources/resources/bin/setenv | 2 +- .../main/filtered-resources/resources/bin/shell | 317 ++-------- .../main/filtered-resources/resources/bin/start | 146 +---- .../filtered-resources/resources/bin/status | 129 +---- .../main/filtered-resources/resources/bin/stop | 129 +---- .../base/src/main/resources/resources/bin/karaf | 574 ------------------- .../src/main/resources/resources/bin/karaf.bat | 428 -------------- .../apache/karaf/instance/resources/bin/karaf | 2 +- .../apache/karaf/instance/resources/bin/start | 2 +- .../apache/karaf/instance/resources/bin/stop | 2 +- 14 files changed, 889 insertions(+), 2171 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/d7a2185a/assemblies/features/base/src/main/filtered-resources/resources/bin/client ---------------------------------------------------------------------- diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/client b/assemblies/features/base/src/main/filtered-resources/resources/bin/client index 9f61925..b60dc4f 100755 --- a/assemblies/features/base/src/main/filtered-resources/resources/bin/client +++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/client @@ -18,14 +18,15 @@ realpath() { OURPWD=${PWD} - cd "$(dirname "${1}")" - LINK=$(readlink "$(basename "${1}")") + cd "$(dirname "${1}")" || exit 2 + LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}') while [ "${LINK}" ]; do - cd "$(dirname "${LINK}")" - LINK=$(readlink "$(basename "${1}")") + echo "link: ${LINK}" >&2 + cd "$(dirname "${LINK}")" || exit 2 + LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}') done REALPATH="${PWD}/$(basename "${1}")" - cd "${OURPWD}" + cd "${OURPWD}" || exit 2 echo "${REALPATH}" } @@ -34,247 +35,25 @@ DIRNAME=$(dirname "${REALNAME}") PROGNAME=$(basename "${REALNAME}") # -# Sourcing environment settings for karaf similar to tomcats setenv +# Load common functions # -KARAF_SCRIPT="client" -export KARAF_SCRIPT -if [ -f "$DIRNAME/setenv" ]; then - . "$DIRNAME/setenv" -fi +. "${DIRNAME}/inc" # -# Check/Set up some easily accessible MIN/MAX params for JVM mem usage +# Sourcing environment settings for karaf similar to tomcats setenv # -if [ "x$JAVA_MIN_MEM" = "x" ]; then - JAVA_MIN_MEM=128M - export JAVA_MIN_MEM -fi -if [ "x$JAVA_MAX_MEM" = "x" ]; then - JAVA_MAX_MEM=512M - export JAVA_MAX_MEM +KARAF_SCRIPT="${PROGNAME}" +export KARAF_SCRIPT +if [ -f "${DIRNAME}/setenv" ]; then + . "${DIRNAME}/setenv" fi -warn() { - echo "${PROGNAME}: $*" -} - -die() { - warn "$*" - exit 1 -} - -detectOS() { - # OS specific support (must be 'true' or 'false'). - cygwin=false; - darwin=false; - aix=false; - os400=false; - case "`uname`" in - CYGWIN*) - cygwin=true - ;; - Darwin*) - darwin=true - ;; - AIX*) - aix=true - ;; - OS400*) - os400=true - ;; - esac - # For AIX, set an environment variable - if $aix; then - export LDR_CNTRL=MAXDATA=0xB0000000@DSA - echo $LDR_CNTRL - fi -} - -unlimitFD() { - # Use the maximum available, or set MAX_FD != -1 to use that - if [ "x$MAX_FD" = "x" ]; then - MAX_FD="maximum" - fi - - # Increase the maximum file descriptors if we can - if [ "$os400" = "false" ] && [ "$cygwin" = "false" ]; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ "$MAX_FD_LIMIT" != 'unlimited' ]; then - if [ $? -eq 0 ]; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ]; then - # use the system max - MAX_FD="$MAX_FD_LIMIT" - fi - - ulimit -n $MAX_FD > /dev/null - # echo "ulimit -n" `ulimit -n` - if [ $? -ne 0 ]; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query system maximum file descriptor limit: $MAX_FD_LIMIT" - fi - fi - fi -} - -locateHome() { - if [ "x$KARAF_HOME" != "x" ]; then - warn "Ignoring predefined value for KARAF_HOME" - fi - - # In POSIX shells, CDPATH may cause cd to write to stdout - (unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - KARAF_HOME=`cd "$DIRNAME/.."; pwd` - if [ ! -d "$KARAF_HOME" ]; then - die "KARAF_HOME is not valid: $KARAF_HOME" - fi -} - -locateBase() { - if [ "x$KARAF_BASE" != "x" ]; then - if [ ! -d "$KARAF_BASE" ]; then - die "KARAF_BASE is not valid: $KARAF_BASE" - fi - else - KARAF_BASE=$KARAF_HOME - fi -} - -locateData() { - if [ "x$KARAF_DATA" != "x" ]; then - if [ ! -d "$KARAF_DATA" ]; then - die "KARAF_DATA is not valid: $KARAF_DATA" - fi - else - KARAF_DATA=$KARAF_BASE/data - fi -} - -locateEtc() { - if [ "x$KARAF_ETC" != "x" ]; then - if [ ! -d "$KARAF_ETC" ]; then - die "KARAF_ETC is not valid: $KARAF_ETC" - fi - else - KARAF_ETC=$KARAF_BASE/etc - fi -} - -setupNativePath() { - # Support for loading native libraries - LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:$KARAF_BASE/lib:$KARAF_HOME/lib" - - # For Cygwin, set PATH from LD_LIBRARY_PATH - if $cygwin; then - LD_LIBRARY_PATH=`cygpath --path --windows "$LD_LIBRARY_PATH"` - PATH="$PATH;$LD_LIBRARY_PATH" - export PATH - fi - export LD_LIBRARY_PATH -} - -pathCanonical() { - dst="${1}" - while [ -h "${dst}" ] ; do - ls=`ls -ld "${dst}"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - dst="$link" - else - dst="`dirname "${dst}"`/$link" - fi - done - bas=`basename "${dst}"` - dir=`dirname "${dst}"` - if [ "$bas" != "$dir" ]; then - dst="`pathCanonical "$dir"`/$bas" - fi - echo "${dst}" | sed -e 's#//#/#g' -e 's#/./#/#g' -e 's#/[^/]*/../#/#g' -} - -locateJava() { - # Setup the Java Virtual Machine - if $cygwin ; then - [ -n "$JAVA" ] && JAVA=`cygpath --unix "$JAVA"` - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` - fi - - if [ "x$JAVA_HOME" = "x" ] && [ "$darwin" = "true" ]; then - JAVA_HOME="$(/usr/libexec/java_home -v 1.7)" - fi - if [ "x$JAVA" = "x" ] && [ -r /etc/gentoo-release ] ; then - JAVA_HOME=`java-config --jre-home` - fi - if [ "x$JAVA" = "x" ]; then - if [ "x$JAVA_HOME" != "x" ]; then - if [ ! -d "$JAVA_HOME" ]; then - die "JAVA_HOME is not valid: $JAVA_HOME" - fi - JAVA="$JAVA_HOME/bin/java" - else - warn "JAVA_HOME not set; results may vary" - JAVA=`type java` - JAVA=`expr "$JAVA" : '.* \(/.*\)$'` - if [ "x$JAVA" = "x" ]; then - die "java command not found" - fi - fi - fi - if [ "x$JAVA_HOME" = "x" ]; then - JAVA_HOME="$(dirname $(dirname $(pathCanonical "$JAVA")))" - fi -} - -detectJVM() { - #echo "`$JAVA -version`" - # This service should call `java -version`, - # read stdout, and look for hints - if $JAVA -version 2>&1 | grep "^IBM" ; then - JVM_VENDOR="IBM" - # on OS/400, java -version does not contain IBM explicitly - elif $os400; then - JVM_VENDOR="IBM" - else - JVM_VENDOR="SUN" - fi - # echo "JVM vendor is $JVM_VENDOR" -} - -setupDefaults() { - DEFAULT_JAVA_OPTS="-Xms$JAVA_MIN_MEM -Xmx$JAVA_MAX_MEM " - - #Set the JVM_VENDOR specific JVM flags - if [ "$JVM_VENDOR" = "SUN" ]; then - # permgen was removed in Java 8 - VERSION=`$JAVA -version 2>&1 | egrep '"([0-9].[0-9]\..*[0-9]).*"' | awk '{print substr($3,2,length($3)-2)}' | awk '{print substr($1, 3, 3)}' | sed -e 's;\.;;g'` - if [ "$VERSION" -lt "80" ]; then - # Check some easily accessible MIN/MAX params for JVM mem usage - if [ "x$JAVA_PERM_MEM" != "x" ]; then - DEFAULT_JAVA_OPTS="$DEFAULT_JAVA_OPTS -XX:PermSize=$JAVA_PERM_MEM" - fi - if [ "x$JAVA_MAX_PERM_MEM" != "x" ]; then - DEFAULT_JAVA_OPTS="$DEFAULT_JAVA_OPTS -XX:MaxPermSize=$JAVA_MAX_PERM_MEM" - fi - fi - DEFAULT_JAVA_OPTS="-server $DEFAULT_JAVA_OPTS -Dcom.sun.management.jmxremote" - elif [ "$JVM_VENDOR" = "IBM" ]; then - if $os400; then - DEFAULT_JAVA_OPTS="$DEFAULT_JAVA_OPTS" - elif $aix; then - DEFAULT_JAVA_OPTS="-Xverify:none -Xdump:heap -Xlp $DEFAULT_JAVA_OPTS" - else - DEFAULT_JAVA_OPTS="-Xverify:none $DEFAULT_JAVA_OPTS" - fi - fi - +setupClassPath() { # Add the jars in the lib dir - CLASSPATH="$KARAF_HOME/system/org/apache/karaf/org.apache.karaf.client/@@project.version@@/org.apache.karaf.client-@@project.version@@.jar" - CLASSPATH="$CLASSPATH:$KARAF_HOME/system/org/apache/sshd/sshd-core/@@sshd.version@@/sshd-core-@@sshd.version@@.jar" - CLASSPATH="$CLASSPATH:$KARAF_HOME/system/org/jline/jline/@@jline.version@@/jline-@@jline.version@@.jar" - CLASSPATH="$CLASSPATH:$KARAF_HOME/system/org/slf4j/slf4j-api/@@slf4j.version@@/slf4j-api-@@slf4j.version@@.jar" - + CLASSPATH="${KARAF_HOME}/system/org/apache/karaf/org.apache.karaf.client/@@project.version@@/org.apache.karaf.client-@@project.version@@.jar" + CLASSPATH="${CLASSPATH}:${KARAF_HOME}/system/org/apache/sshd/sshd-core/@@sshd.version@@/sshd-core-@@sshd.version@@.jar" + CLASSPATH="${CLASSPATH}:${KARAF_HOME}/system/org/jline/jline/@@jline.version@@/jline-@@jline.version@@.jar" + CLASSPATH="${CLASSPATH}:${KARAF_HOME}/system/org/slf4j/slf4j-api/@@slf4j.version@@/slf4j-api-@@slf4j.version@@.jar" } init() { @@ -308,21 +87,22 @@ init() { # Setup default options setupDefaults + # Setup classpath + setupClassPath } run() { - - if $cygwin; then - KARAF_HOME=`cygpath --path --windows "$KARAF_HOME"` - KARAF_BASE=`cygpath --path --windows "$KARAF_BASE"` - KARAF_DATA=`cygpath --path --windows "$KARAF_DATA"` - KARAF_ETC=`cygpath --path --windows "$KARAF_ETC"` - if [ ! -z "$CLASSPATH" ]; then - CLASSPATH=`cygpath --path --windows "$CLASSPATH"` - fi - fi - - exec "$JAVA" $JAVA_OPTS -Dkaraf.instances="${KARAF_HOME}/instances" -Dkaraf.home="$KARAF_HOME" -Dkaraf.base="$KARAF_BASE" -Dkaraf.etc="$KARAF_ETC" -Djava.io.tmpdir="$KARAF_DATA/tmp" -Djava.util.logging.config.file="$KARAF_BASE/etc/java.util.logging.properties" $KARAF_OPTS $OPTS -classpath "$CLASSPATH" org.apache.karaf.client.Main "$@" + convertPaths + exec "${JAVA}" ${JAVA_OPTS} \ + -Dkaraf.instances="${KARAF_HOME}/instances" \ + -Dkaraf.home="${KARAF_HOME}" \ + -Dkaraf.base="${KARAF_BASE}" \ + -Dkaraf.etc="${KARAF_ETC}" \ + -Djava.io.tmpdir="${KARAF_DATA}/tmp" \ + -Djava.util.logging.config.file="${KARAF_BASE}/etc/java.util.logging.properties" \ + ${KARAF_OPTS} ${OPTS} \ + -classpath "${CLASSPATH}" \ + org.apache.karaf.client.Main "$@" } main() { http://git-wip-us.apache.org/repos/asf/karaf/blob/d7a2185a/assemblies/features/base/src/main/filtered-resources/resources/bin/instance ---------------------------------------------------------------------- diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/instance b/assemblies/features/base/src/main/filtered-resources/resources/bin/instance index 94126db..f2c1d83 100755 --- a/assemblies/features/base/src/main/filtered-resources/resources/bin/instance +++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/instance @@ -18,14 +18,15 @@ realpath() { OURPWD=${PWD} - cd "$(dirname "${1}")" - LINK=$(readlink "$(basename "${1}")") + cd "$(dirname "${1}")" || exit 2 + LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}') while [ "${LINK}" ]; do - cd "$(dirname "${LINK}")" - LINK=$(readlink "$(basename "${1}")") + echo "link: ${LINK}" >&2 + cd "$(dirname "${LINK}")" || exit 2 + LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}') done REALPATH="${PWD}/$(basename "${1}")" - cd "${OURPWD}" + cd "${OURPWD}" || exit 2 echo "${REALPATH}" } @@ -34,280 +35,25 @@ DIRNAME=$(dirname "${REALNAME}") PROGNAME=$(basename "${REALNAME}") # -# Sourcing environment settings for karaf similar to tomcats setenv +# Load common functions # -KARAF_SCRIPT="instance" -export KARAF_SCRIPT -if [ -f "$DIRNAME/setenv" ]; then - . "$DIRNAME/setenv" -fi +. "${DIRNAME}/inc" # -# Check/Set up some easily accessible MIN/MAX params for JVM mem usage +# Sourcing environment settings for karaf similar to tomcats setenv # -if [ "x$JAVA_MIN_MEM" = "x" ]; then - JAVA_MIN_MEM=128M - export JAVA_MIN_MEM -fi -if [ "x$JAVA_MAX_MEM" = "x" ]; then - JAVA_MAX_MEM=512M - export JAVA_MAX_MEM +KARAF_SCRIPT="${PROGNAME}" +export KARAF_SCRIPT +if [ -f "${DIRNAME}/setenv" ]; then + . "${DIRNAME}/setenv" fi -warn() { - echo "${PROGNAME}: $*" -} - -die() { - warn "$*" - exit 1 -} - -detectOS() { - # OS specific support (must be 'true' or 'false'). - cygwin=false; - darwin=false; - aix=false; - os400=false; - case "`uname`" in - CYGWIN*) - cygwin=true - ;; - Darwin*) - darwin=true - ;; - AIX*) - aix=true - ;; - OS400*) - os400=true - ;; - esac - # For AIX, set an environment variable - if $aix; then - export LDR_CNTRL=MAXDATA=0xB0000000@DSA - echo $LDR_CNTRL - fi -} - -unlimitFD() { - # Use the maximum available, or set MAX_FD != -1 to use that - if [ "x$MAX_FD" = "x" ]; then - MAX_FD="maximum" - fi - - # Increase the maximum file descriptors if we can - if [ "$os400" = "false" ] && [ "$cygwin" = "false" ]; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ "$MAX_FD_LIMIT" != 'unlimited' ]; then - if [ $? -eq 0 ]; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ]; then - # use the system max - MAX_FD="$MAX_FD_LIMIT" - fi - - ulimit -n $MAX_FD > /dev/null - # echo "ulimit -n" `ulimit -n` - if [ $? -ne 0 ]; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query system maximum file descriptor limit: $MAX_FD_LIMIT" - fi - fi - fi -} - -locateHome() { - if [ "x$KARAF_HOME" != "x" ]; then - warn "Ignoring predefined value for KARAF_HOME" - fi - - # In POSIX shells, CDPATH may cause cd to write to stdout - (unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - KARAF_HOME=`cd "$DIRNAME/.."; pwd` - if [ ! -d "$KARAF_HOME" ]; then - die "KARAF_HOME is not valid: $KARAF_HOME" - fi -} - -locateBase() { - if [ "x$KARAF_BASE" != "x" ]; then - if [ ! -d "$KARAF_BASE" ]; then - die "KARAF_BASE is not valid: $KARAF_BASE" - fi - else - KARAF_BASE=$KARAF_HOME - fi -} - -locateData() { - if [ "x$KARAF_DATA" != "x" ]; then - if [ ! -d "$KARAF_DATA" ]; then - die "KARAF_DATA is not valid: $KARAF_DATA" - fi - else - KARAF_DATA=$KARAF_BASE/data - fi -} - -locateEtc() { - if [ "x$KARAF_ETC" != "x" ]; then - if [ ! -d "$KARAF_ETC" ]; then - die "KARAF_ETC is not valid: $KARAF_ETC" - fi - else - KARAF_ETC=$KARAF_BASE/etc - fi -} - -setupNativePath() { - # Support for loading native libraries - LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:$KARAF_BASE/lib:$KARAF_HOME/lib" - - # For Cygwin, set PATH from LD_LIBRARY_PATH - if $cygwin; then - LD_LIBRARY_PATH=`cygpath --path --windows "$LD_LIBRARY_PATH"` - PATH="$PATH;$LD_LIBRARY_PATH" - export PATH - fi - export LD_LIBRARY_PATH -} - -pathCanonical() { - dst="${1}" - while [ -h "${dst}" ] ; do - ls=`ls -ld "${dst}"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - dst="$link" - else - dst="`dirname "${dst}"`/$link" - fi - done - bas=`basename "${dst}"` - dir=`dirname "${dst}"` - if [ "$bas" != "$dir" ]; then - dst="`pathCanonical "$dir"`/$bas" - fi - echo "${dst}" | sed -e 's#//#/#g' -e 's#/./#/#g' -e 's#/[^/]*/../#/#g' -} - -locateJava() { - # Setup the Java Virtual Machine - if $cygwin ; then - [ -n "$JAVA" ] && JAVA=`cygpath --unix "$JAVA"` - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` - fi - - if [ "x$JAVA_HOME" = "x" ] && [ "$darwin" = "true" ]; then - JAVA_HOME="$(/usr/libexec/java_home -v 1.7)" - fi - if [ "x$JAVA" = "x" ] && [ -r /etc/gentoo-release ] ; then - JAVA_HOME=`java-config --jre-home` - fi - if [ "x$JAVA" = "x" ]; then - if [ "x$JAVA_HOME" != "x" ]; then - if [ ! -d "$JAVA_HOME" ]; then - die "JAVA_HOME is not valid: $JAVA_HOME" - fi - JAVA="$JAVA_HOME/bin/java" - else - warn "JAVA_HOME not set; results may vary" - JAVA=`type java` - JAVA=`expr "$JAVA" : '.* \(/.*\)$'` - if [ "x$JAVA" = "x" ]; then - die "java command not found" - fi - fi - fi - if [ "x$JAVA_HOME" = "x" ]; then - JAVA_HOME="$(dirname $(dirname $(pathCanonical "$JAVA")))" - fi -} - -detectJVM() { - #echo "`$JAVA -version`" - # This service should call `java -version`, - # read stdout, and look for hints - if $JAVA -version 2>&1 | grep "^IBM" ; then - JVM_VENDOR="IBM" - # on OS/400, java -version does not contain IBM explicitly - elif $os400; then - JVM_VENDOR="IBM" - else - JVM_VENDOR="SUN" - fi - # echo "JVM vendor is $JVM_VENDOR" -} - -setupDebugOptions() { - if [ "x$JAVA_OPTS" = "x" ]; then - JAVA_OPTS="$DEFAULT_JAVA_OPTS" - fi - export JAVA_OPTS - - if [ "x$EXTRA_JAVA_OPTS" != "x" ]; then - JAVA_OPTS="$JAVA_OPTS $EXTRA_JAVA_OPTS" - fi - - # Set Debug options if enabled - if [ "x$KARAF_DEBUG" != "x" ]; then - # Use the defaults if JAVA_DEBUG_OPTS was not set - if [ "x$JAVA_DEBUG_OPTS" = "x" ]; then - JAVA_DEBUG_OPTS="$DEFAULT_JAVA_DEBUG_OPTS" - fi - - JAVA_OPTS="$JAVA_DEBUG_OPTS $JAVA_OPTS" - warn "Enabling Java debug options: $JAVA_DEBUG_OPTS" - fi -} - -setupDefaults() { - DEFAULT_JAVA_OPTS="-Xms$JAVA_MIN_MEM -Xmx$JAVA_MAX_MEM " - - #Set the JVM_VENDOR specific JVM flags - if [ "$JVM_VENDOR" = "SUN" ]; then - # permgen was removed in Java 8 - VERSION=`$JAVA -version 2>&1 | egrep '"([0-9].[0-9]\..*[0-9]).*"' | awk '{print substr($3,2,length($3)-2)}' | awk '{print substr($1, 3, 3)}' | sed -e 's;\.;;g'` - if [ "$VERSION" -lt "80" ]; then - # Check some easily accessible MIN/MAX params for JVM mem usage - if [ "x$JAVA_PERM_MEM" != "x" ]; then - DEFAULT_JAVA_OPTS="$DEFAULT_JAVA_OPTS -XX:PermSize=$JAVA_PERM_MEM" - fi - if [ "x$JAVA_MAX_PERM_MEM" != "x" ]; then - DEFAULT_JAVA_OPTS="$DEFAULT_JAVA_OPTS -XX:MaxPermSize=$JAVA_MAX_PERM_MEM" - fi - fi - DEFAULT_JAVA_OPTS="-server $DEFAULT_JAVA_OPTS -Dcom.sun.management.jmxremote" - elif [ "$JVM_VENDOR" = "IBM" ]; then - if $os400; then - DEFAULT_JAVA_OPTS="$DEFAULT_JAVA_OPTS" - elif $aix; then - DEFAULT_JAVA_OPTS="-Xverify:none -Xdump:heap -Xlp $DEFAULT_JAVA_OPTS" - else - DEFAULT_JAVA_OPTS="-Xverify:none $DEFAULT_JAVA_OPTS" - fi - fi - +setupClassPath() { # Setup classpath - CLASSPATH="$KARAF_HOME/system/org/apache/karaf/instance/org.apache.karaf.instance.core/@@project.version@@/org.apache.karaf.instance.core-@@project.version@@.jar" - CLASSPATH="$CLASSPATH:$KARAF_HOME/system/org/apache/karaf/shell/org.apache.karaf.shell.core/@@project.version@@/org.apache.karaf.shell.core-@@project.version@@.jar" - CLASSPATH="$CLASSPATH:$KARAF_HOME/system/org/ops4j/pax/logging/pax-logging-api/@@pax.logging.version@@/pax-logging-api-@@pax.logging.version@@.jar" - CLASSPATH="$CLASSPATH:$KARAF_HOME/system/org/jline/jline/@@jline.version@@/jline-@@jline.version@@.jar" - - DEFAULT_JAVA_DEBUG_PORT="5005" - if [ "x$JAVA_DEBUG_PORT" = "x" ]; then - JAVA_DEBUG_PORT="$DEFAULT_JAVA_DEBUG_PORT" - fi - DEFAULT_JAVA_DEBUG_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=$JAVA_DEBUG_PORT" - - ## - ## TODO: Move to conf/profiler/yourkit.{sh|cmd} - ## - # Uncomment to enable YourKit profiling - #DEFAULT_JAVA_DEBUG_OPTS="-Xrunyjpagent" + CLASSPATH="${KARAF_HOME}/system/org/apache/karaf/instance/org.apache.karaf.instance.core/@@project.version@@/org.apache.karaf.instance.core-@@project.version@@.jar" + CLASSPATH="${CLASSPATH}:${KARAF_HOME}/system/org/apache/karaf/shell/org.apache.karaf.shell.core/@@project.version@@/org.apache.karaf.shell.core-@@project.version@@.jar" + CLASSPATH="${CLASSPATH}:${KARAF_HOME}/system/org/ops4j/pax/logging/pax-logging-api/@@pax.logging.version@@/pax-logging-api-@@pax.logging.version@@.jar" + CLASSPATH="${CLASSPATH}:${KARAF_HOME}/system/org/jline/jline/@@jline.version@@/jline-@@jline.version@@.jar" } init() { @@ -341,24 +87,26 @@ init() { # Setup default options setupDefaults + # Setup classpath + setupClassPath + # Install debug options setupDebugOptions } run() { - - if $cygwin; then - KARAF_HOME=`cygpath --path --windows "$KARAF_HOME"` - KARAF_BASE=`cygpath --path --windows "$KARAF_BASE"` - KARAF_DATA=`cygpath --path --windows "$KARAF_DATA"` - KARAF_ETC=`cygpath --path --windows "$KARAF_ETC"` - if [ ! -z "$CLASSPATH" ]; then - CLASSPATH=`cygpath --path --windows "$CLASSPATH"` - fi - fi - - exec "$JAVA" $JAVA_OPTS -Dkaraf.instances="${KARAF_HOME}/instances" -Dkaraf.home="$KARAF_HOME" -Dkaraf.base="$KARAF_BASE" -Dkaraf.etc="$KARAF_ETC" -Djava.io.tmpdir="$KARAF_DATA/tmp" -Djava.util.logging.config.file="$KARAF_BASE/etc/java.util.logging.properties" $KARAF_OPTS $OPTS -classpath "$CLASSPATH" org.apache.karaf.instance.main.Execute "$@" + convertPaths + exec "${JAVA}" ${JAVA_OPTS} \ + -Dkaraf.instances="${KARAF_HOME}/instances" \ + -Dkaraf.home="${KARAF_HOME}" \ + -Dkaraf.base="${KARAF_BASE}" \ + -Dkaraf.etc="${KARAF_ETC}" \ + -Djava.io.tmpdir="${KARAF_DATA}/tmp" \ + -Djava.util.logging.config.file="${KARAF_BASE}/etc/java.util.logging.properties" \ + ${KARAF_OPTS} ${OPTS} \ + -classpath "${CLASSPATH}" \ + org.apache.karaf.instance.main.Execute "$@" } main() { http://git-wip-us.apache.org/repos/asf/karaf/blob/d7a2185a/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf ---------------------------------------------------------------------- diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf b/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf new file mode 100755 index 0000000..be08741 --- /dev/null +++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf @@ -0,0 +1,303 @@ +#!/bin/sh +# +# 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. +# + +realpath() { + OURPWD=${PWD} + cd "$(dirname "${1}")" || exit 2 + LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}') + while [ "${LINK}" ]; do + echo "link: ${LINK}" >&2 + cd "$(dirname "${LINK}")" || exit 2 + LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}') + done + REALPATH="${PWD}/$(basename "${1}")" + cd "${OURPWD}" || exit 2 + echo "${REALPATH}" +} + +REALNAME=$(realpath "$0") +DIRNAME=$(dirname "${REALNAME}") +PROGNAME=$(basename "${REALNAME}") + +# +# Load common functions +# +. "${DIRNAME}/inc" + +# +# Sourcing environment settings for karaf similar to tomcats setenv +# +KARAF_SCRIPT="${PROGNAME}" +export KARAF_SCRIPT +if [ -f "${DIRNAME}/setenv" ]; then + . "${DIRNAME}/setenv" +fi + +forceNoRoot() { + # If configured, prevent execution as root + if [ "${KARAF_NOROOT}" ] && [ "$(id -u)" -eq 0 ]; then + die "Do not run as root!" + fi +} + +setupClassPath() { + # Add the jars in the lib dir + for file in "${KARAF_HOME}"/lib/boot/*.jar + do + if [ -z "${CLASSPATH}" ]; then + CLASSPATH="${file}" + else + CLASSPATH="${CLASSPATH}:${file}" + fi + done +} + +checkRootInstance() { + ROOT_INSTANCE_RUNNING=false + if [ -f "${KARAF_HOME}/instances/instance.properties" ]; + then + ROOT_INSTANCE_PID=$(sed -n -e '/item.0.pid/ s/.*\= *//p' "${KARAF_HOME}/instances/instance.properties") + ROOT_INSTANCE_NAME=$(sed -n -e '/item.0.name/ s/.*\= *//p' "${KARAF_HOME}/instances/instance.properties") + if [ "${ROOT_INSTANCE_PID}" -ne "0" ]; then + if ps p "${ROOT_INSTANCE_PID}" > /dev/null + then + ROOT_INSTANCE_RUNNING=true + fi + fi + fi +} + +init() { + # Prevent root execution if configured + forceNoRoot + + # Determine if there is special OS handling we must perform + detectOS + + # Unlimit the number of file descriptors if possible + unlimitFD + + # Locate the Karaf home directory + locateHome + + # Locate the Karaf base directory + locateBase + + # Locate the Karaf data directory + locateData + + # Locate the Karaf etc directory + locateEtc + + # Setup the native library path + setupNativePath + + # Locate the Java VM to execute + locateJava + + # Determine the JVM vendor + detectJVM + + # Determine the JVM version >= 1.6 + checkJvmVersion + + # Check if a root instance is already running + checkRootInstance + + # Setup default options + setupDefaults + + # Setup classpath + setupClassPath + + # Install debug options + setupDebugOptions + +} + +run() { + OPTS="-Dkaraf.startLocalConsole=true -Dkaraf.startRemoteShell=true" + MAIN=org.apache.karaf.main.Main + CHECK_ROOT_INSTANCE_RUNNING=true + JAVA_ENDORSED_DIRS="${JAVA_HOME}/jre/lib/endorsed:${JAVA_HOME}/lib/endorsed:${KARAF_HOME}/lib/endorsed" + JAVA_EXT_DIRS="${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/ext:${KARAF_HOME}/lib/ext" + if ${cygwin}; then + JAVA_HOME=$(cygpath --path --windows "${JAVA_HOME}") + JAVA_ENDORSED_DIRS=$(cygpath --path --windows "${JAVA_ENDORSED_DIRS}") + JAVA_EXT_DIRS=$(cygpath --path --windows "${JAVA_EXT_DIRS}") + fi + convertPaths + cd "${KARAF_BASE}" || exit 2 + + if [ -z "${KARAF_EXEC}" ]; then + KARAF_EXEC="" + fi + + debug=false + nodebug=false + while [ "${1}" != "" ]; do + case "${1}" in + 'clean') + rm -rf "${KARAF_DATA:?}" + shift + ;; + 'debug') + debug=true + shift + ;; + 'status') + MAIN=org.apache.karaf.main.Status + CHECK_ROOT_INSTANCE_RUNNING=false + nodebug=true + shift + ;; + 'stop') + MAIN=org.apache.karaf.main.Stop + CHECK_ROOT_INSTANCE_RUNNING=false + nodebug=true + shift + ;; + 'console') + CHECK_ROOT_INSTANCE_RUNNING=false + shift + ;; + 'server') + OPTS="-Dkaraf.startLocalConsole=false -Dkaraf.startRemoteShell=true" + shift + ;; + 'run') + OPTS="-Dkaraf.startLocalConsole=false -Dkaraf.startRemoteShell=true -Dkaraf.log.console=ALL" + shift + ;; + 'daemon') + OPTS="-Dkaraf.startLocalConsole=false -Dkaraf.startRemoteShell=true" + KARAF_DAEMON="true" + KARAF_EXEC="exec" + shift + ;; + 'client') + OPTS="-Dkaraf.startLocalConsole=true -Dkaraf.startRemoteShell=false" + CHECK_ROOT_INSTANCE_RUNNING=false + nodebug=true + shift + ;; + 'classpath') + echo "Classpath: ${CLASSPATH}" + shift + ;; + *) + break + ;; + esac + done + + if [ ${debug} ] && [ ! ${nodebug} ]; then + if [ "x${JAVA_DEBUG_OPTS}" = "x" ]; then + JAVA_DEBUG_OPTS="${DEFAULT_JAVA_DEBUG_OPTS}" + fi + JAVA_OPTS="${JAVA_DEBUG_OPTS} ${JAVA_OPTS}" + fi + + while true; do + # When users want to update the lib version of, they just need to create + # a lib.next directory and on the new restart, it will replace the current lib directory. + if [ -d "${KARAF_HOME:?}/lib.next" ] ; then + echo "Updating libs..." + rm -rf "${KARAF_HOME:?}/lib" + mv -f "${KARAF_HOME:?}/lib.next" "${KARAF_HOME}/lib" + fi + + # Ensure the log directory exists + # We may need to have a place to redirect stdout/stderr + if [ ! -d "${KARAF_DATA}/log" ]; then + mkdir -p "${KARAF_DATA}/log" + fi + if [ ! -d "${KARAF_DATA}/tmp" ]; then + mkdir -p "${KARAF_DATA}/tmp" + fi + + if [ "${ROOT_INSTANCE_RUNNING}" = "false" ] || [ "${CHECK_ROOT_INSTANCE_RUNNING}" = "false" ] ; then + if [ "${VERSION}" -gt "80" ]; then + ${KARAF_EXEC} "${JAVA}" ${JAVA_OPTS} \ + --add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED \ + --add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED \ + --add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED \ + --add-exports=java.xml.bind/com.sun.xml.internal.bind.v2.runtime=ALL-UNNAMED \ + --add-exports=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED \ + --add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED \ + --add-modules java.annotations.common,java.corba,java.transaction,java.xml.bind,java.xml.ws \ + -Dkaraf.instances="${KARAF_HOME}/instances" \ + -Dkaraf.home="${KARAF_HOME}" \ + -Dkaraf.base="${KARAF_BASE}" \ + -Dkaraf.data="${KARAF_DATA}" \ + -Dkaraf.etc="${KARAF_ETC}" \ + -Dkaraf.restart.jvm.supported=true \ + -Djava.io.tmpdir="${KARAF_DATA}/tmp" \ + -Djava.util.logging.config.file="${KARAF_BASE}/etc/java.util.logging.properties" \ + ${KARAF_SYSTEM_OPTS} \ + ${KARAF_OPTS} \ + ${OPTS} \ + -classpath "${CLASSPATH}" \ + ${MAIN} "$@" + else + ${KARAF_EXEC} "${JAVA}" ${JAVA_OPTS} \ + -Djava.endorsed.dirs="${JAVA_ENDORSED_DIRS}" \ + -Djava.ext.dirs="${JAVA_EXT_DIRS}" \ + -Dkaraf.instances="${KARAF_HOME}/instances" \ + -Dkaraf.home="${KARAF_HOME}" \ + -Dkaraf.base="${KARAF_BASE}" \ + -Dkaraf.data="${KARAF_DATA}" \ + -Dkaraf.etc="${KARAF_ETC}" \ + -Dkaraf.restart.jvm.supported=true \ + -Djava.io.tmpdir="${KARAF_DATA}/tmp" \ + -Djava.util.logging.config.file="${KARAF_BASE}/etc/java.util.logging.properties" \ + ${KARAF_SYSTEM_OPTS} \ + ${KARAF_OPTS} \ + ${OPTS} \ + -classpath "${CLASSPATH}" \ + ${MAIN} "$@" + fi + else + die "There is a Root instance already running with name ${ROOT_INSTANCE_NAME} and pid ${ROOT_INSTANCE_PID}" + fi + + KARAF_RC=$? + if [ ${KARAF_DAEMON} ] ; then + exit ${KARAF_RC} + else + if [ "${KARAF_RC}" -eq 10 ]; then + echo "Restarting JVM..." + else + exit ${KARAF_RC} + fi + fi + done +} + +nothing() { + # nothing to do here + a=a +} + +main() { + init + trap 'nothing' TSTP + run "$@" +} + +main "$@" http://git-wip-us.apache.org/repos/asf/karaf/blob/d7a2185a/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf.bat ---------------------------------------------------------------------- diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf.bat b/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf.bat new file mode 100644 index 0000000..fec2f30 --- /dev/null +++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf.bat @@ -0,0 +1,428 @@ +@echo off +rem +rem +rem Licensed to the Apache Software Foundation (ASF) under one or more +rem contributor license agreements. See the NOTICE file distributed with +rem this work for additional information regarding copyright ownership. +rem The ASF licenses this file to You under the Apache License, Version 2.0 +rem (the "License"); you may not use this file except in compliance with +rem the License. You may obtain a copy of the License at +rem +rem http://www.apache.org/licenses/LICENSE-2.0 +rem +rem Unless required by applicable law or agreed to in writing, software +rem distributed under the License is distributed on an "AS IS" BASIS, +rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +rem See the License for the specific language governing permissions and +rem limitations under the License. +rem + +if not "%ECHO%" == "" echo %ECHO% + +setlocal +set DIRNAME=%~dp0% +set PROGNAME=%~nx0% +set ARGS=%* + +rem Sourcing environment settings for karaf similar to tomcats setenv +SET KARAF_SCRIPT="karaf.bat" +if exist "%DIRNAME%setenv.bat" ( + call "%DIRNAME%setenv.bat" +) + +rem Check console window title. Set to Karaf by default +if not "%KARAF_TITLE%" == "" ( + title %KARAF_TITLE% +) else ( + title Karaf +) + +rem Check/Set up some easily accessible MIN/MAX params for JVM mem usage +if "%JAVA_MIN_MEM%" == "" ( + set JAVA_MIN_MEM=128M +) +if "%JAVA_MAX_MEM%" == "" ( + set JAVA_MAX_MEM=512M +) + +goto BEGIN + +:warn + echo %PROGNAME%: %* +goto :EOF + +:BEGIN + +rem # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + +if not "%KARAF_HOME%" == "" ( + call :warn Ignoring predefined value for KARAF_HOME +) +set KARAF_HOME=%DIRNAME%.. +if not exist "%KARAF_HOME%" ( + call :warn KARAF_HOME is not valid: "%KARAF_HOME%" + goto END +) + +if not "%KARAF_BASE%" == "" ( + if not exist "%KARAF_BASE%" ( + call :warn KARAF_BASE is not valid: "%KARAF_BASE%" + goto END + ) +) +if "%KARAF_BASE%" == "" ( + set "KARAF_BASE=%KARAF_HOME%" +) + +if not "%KARAF_DATA%" == "" ( + if not exist "%KARAF_DATA%" ( + call :warn KARAF_DATA is not valid: "%KARAF_DATA%" + call :warn Creating %KARAF_DATA% + mkdir %KARAF_DATA% + ) +) +if "%KARAF_DATA%" == "" ( + set "KARAF_DATA=%KARAF_BASE%\data" +) + +if not "%KARAF_ETC%" == "" ( + if not exist "%KARAF_ETC%" ( + call :warn KARAF_ETC is not valid: "%KARAF_ETC%" + goto END + ) +) +if "%KARAF_ETC%" == "" ( + set "KARAF_ETC=%KARAF_BASE%\etc" +) + +set LOCAL_CLASSPATH=%CLASSPATH% +set JAVA_MODE=-server + +set CLASSPATH=%LOCAL_CLASSPATH%;%KARAF_BASE%\conf +set DEFAULT_JAVA_DEBUG_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 + +if "%LOCAL_CLASSPATH%" == "" goto :KARAF_CLASSPATH_EMPTY + set CLASSPATH=%LOCAL_CLASSPATH%;%KARAF_BASE%\conf + goto :KARAF_CLASSPATH_END +:KARAF_CLASSPATH_EMPTY + set CLASSPATH=%KARAF_BASE%\conf +:KARAF_CLASSPATH_END + +rem Setup Karaf Home +if exist "%KARAF_HOME%\conf\karaf-rc.cmd" call %KARAF_HOME%\conf\karaf-rc.cmd +if exist "%HOME%\karaf-rc.cmd" call %HOME%\karaf-rc.cmd + +rem Support for loading native libraries +set PATH=%PATH%;%KARAF_BASE%\lib;%KARAF_HOME%\lib + +rem Setup the Java Virtual Machine +if not "%JAVA%" == "" goto :Check_JAVA_END + if not "%JAVA_HOME%" == "" goto :TryJDKEnd + call :warn JAVA_HOME not set; results may vary +:TryJRE + start /w regedit /e __reg1.txt "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment" + if not exist __reg1.txt goto :TryJDK + type __reg1.txt | find "CurrentVersion" > __reg2.txt + if errorlevel 1 goto :TryJDK + for /f "tokens=2 delims==" %%x in (__reg2.txt) do set JavaTemp=%%~x + if errorlevel 1 goto :TryJDK + set JavaTemp=%JavaTemp%## + set JavaTemp=%JavaTemp: ##=##% + set JavaTemp=%JavaTemp: ##=##% + set JavaTemp=%JavaTemp: ##=##% + set JavaTemp=%JavaTemp: ##=##% + set JavaTemp=%JavaTemp: ##=##% + set JavaTemp=%JavaTemp:##=% + del __reg1.txt + del __reg2.txt + start /w regedit /e __reg1.txt "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\%JavaTemp%" + if not exist __reg1.txt goto :TryJDK + type __reg1.txt | find "JavaHome" > __reg2.txt + if errorlevel 1 goto :TryJDK + for /f "tokens=2 delims==" %%x in (__reg2.txt) do set JAVA_HOME=%%~x + if errorlevel 1 goto :TryJDK + del __reg1.txt + del __reg2.txt + goto TryJDKEnd +:TryJDK + start /w regedit /e __reg1.txt "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit" + if not exist __reg1.txt ( + goto TryRegJRE + ) + type __reg1.txt | find "CurrentVersion" > __reg2.txt + if errorlevel 1 ( + goto TryRegJRE + ) + for /f "tokens=2 delims==" %%x in (__reg2.txt) do set JavaTemp=%%~x + if errorlevel 1 ( + goto TryRegJRE + ) + set JavaTemp=%JavaTemp%## + set JavaTemp=%JavaTemp: ##=##% + set JavaTemp=%JavaTemp: ##=##% + set JavaTemp=%JavaTemp: ##=##% + set JavaTemp=%JavaTemp: ##=##% + set JavaTemp=%JavaTemp: ##=##% + set JavaTemp=%JavaTemp:##=% + del __reg1.txt + del __reg2.txt + start /w regedit /e __reg1.txt "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\%JavaTemp%" + if not exist __reg1.txt ( + goto TryRegJRE + ) + type __reg1.txt | find "JavaHome" > __reg2.txt + if errorlevel 1 ( + goto TryRegJRE + ) + for /f "tokens=2 delims==" %%x in (__reg2.txt) do set JAVA_HOME=%%~x + if errorlevel 1 ( + goto TryRegJRE + ) + del __reg1.txt + del __reg2.txt +:TryRegJRE + rem try getting the JAVA_HOME from registry + FOR /F "usebackq tokens=3*" %%A IN (`REG QUERY "HKLM\Software\JavaSoft\Java Runtime Environment" /v CurrentVersion`) DO ( + set JAVA_VERSION=%%A + ) + FOR /F "usebackq tokens=3*" %%A IN (`REG QUERY "HKLM\Software\JavaSoft\Java Runtime Environment\%JAVA_VERSION%" /v JavaHome`) DO ( + set JAVA_HOME=%%A %%B + ) + if not exist "%JAVA_HOME%" ( + goto TryRegJDK + ) + goto TryJDKEnd +:TryRegJDK + rem try getting the JAVA_HOME from registry + FOR /F "usebackq tokens=3*" %%A IN (`REG QUERY "HKLM\Software\JavaSoft\Java Development Kit" /v CurrentVersion`) DO ( + set JAVA_VERSION=%%A + ) + FOR /F "usebackq tokens=3*" %%A IN (`REG QUERY "HKLM\Software\JavaSoft\Java Development Kit\%JAVA_VERSION%" /v JavaHome`) DO ( + set JAVA_HOME=%%A %%B + ) + if not exist "%JAVA_HOME%" ( + call :warn Unable to retrieve JAVA_HOME from Registry + ) + goto TryJDKEnd +:TryJDKEnd + if not exist "%JAVA_HOME%" ( + call :warn JAVA_HOME is not valid: "%JAVA_HOME%" + goto END + ) + set JAVA=%JAVA_HOME%\bin\java +:Check_JAVA_END + +:CheckRootInstance + set ROOT_INSTANCE_RUNNING=false + if exist "%KARAF_HOME%\instances\instance.properties" ( + for /f "delims=" %%x in ( 'findstr "item.0.pid" "%KARAF_HOME%\instances\instance.properties" ' ) do @set pid=%%x + for /f "delims=" %%i in ( 'findstr "item.0.name" "%KARAF_HOME%\instances\instance.properties" ' ) do @set name=%%i + ) + set ROOT_INSTANCE_PID=%pid:~13% + + set ROOT_INSTANCE_NAME=%name:~14% + SET CHECK_RUNNING_CONDITION=true + if "%ROOT_INSTANCE_PID%" == "~13" SET CHECK_RUNNING_CONDITION=false + if "%ROOT_INSTANCE_PID%" == "0" SET CHECK_RUNNING_CONDITION=false + if "%CHECK_RUNNING_CONDITION%" == "true" ( + tasklist /fi "PID eq %ROOT_INSTANCE_PID%" | find ":" > NUL + if errorlevel 1 set ROOT_INSTANCE_RUNNING=true + ) + + +if not exist "%JAVA_HOME%\bin\server\jvm.dll" ( + if not exist "%JAVA_HOME%\jre\bin\server\jvm.dll" ( + echo WARNING: Running Karaf on a Java HotSpot Client VM because server-mode is not available. + echo Install Java Developer Kit to fix this. + echo For more details see http://java.sun.com/products/hotspot/whitepaper.html#client + set JAVA_MODE=-client + ) +) +set DEFAULT_JAVA_OPTS=%JAVA_MODE% -Xms%JAVA_MIN_MEM% -Xmx%JAVA_MAX_MEM% -Dcom.sun.management.jmxremote -XX:+UnlockDiagnosticVMOptions -XX:+UnsyncloadClass + +rem Check some easily accessible MIN/MAX params for JVM mem usage +if not "%JAVA_PERM_MEM%" == "" ( + set DEFAULT_JAVA_OPTS=%DEFAULT_JAVA_OPTS% -XX:PermSize=%JAVA_PERM_MEM% +) +if not "%JAVA_MAX_PERM_MEM%" == "" ( + set DEFAULT_JAVA_OPTS=%DEFAULT_JAVA_OPTS% -XX:MaxPermSize=%JAVA_MAX_PERM_MEM% +) + +if "%JAVA_OPTS%" == "" set JAVA_OPTS=%DEFAULT_JAVA_OPTS% + +if "%EXTRA_JAVA_OPTS%" == "" goto :KARAF_EXTRA_JAVA_OPTS_END + set JAVA_OPTS=%JAVA_OPTS% %EXTRA_JAVA_OPTS% +:KARAF_EXTRA_JAVA_OPTS_END + +if "%KARAF_DEBUG%" == "" goto :KARAF_DEBUG_END + if "%1" == "stop" goto :KARAF_DEBUG_END + if "%1" == "client" goto :KARAF_DEBUG_END + if "%1" == "status" goto :KARAF_DEBUG_END + rem Use the defaults if JAVA_DEBUG_OPTS was not set + if "%JAVA_DEBUG_OPTS%" == "" set JAVA_DEBUG_OPTS=%DEFAULT_JAVA_DEBUG_OPTS% + + set JAVA_OPTS=%JAVA_DEBUG_OPTS% %JAVA_OPTS% + call :warn Enabling Java debug options: %JAVA_DEBUG_OPTS% +:KARAF_DEBUG_END + +if "%KARAF_PROFILER%" == "" goto :KARAF_PROFILER_END + set KARAF_PROFILER_SCRIPT=%KARAF_HOME%\conf\profiler\%KARAF_PROFILER%.cmd + + if exist "%KARAF_PROFILER_SCRIPT%" goto :KARAF_PROFILER_END + call :warn Missing configuration for profiler '%KARAF_PROFILER%': %KARAF_PROFILER_SCRIPT% + goto END +:KARAF_PROFILER_END + +rem Setup the classpath +pushd "%KARAF_HOME%\lib\boot" +for %%G in (*.jar) do call:APPEND_TO_CLASSPATH %%G +popd +goto CLASSPATH_END + +: APPEND_TO_CLASSPATH +set filename=%~1 +set suffix=%filename:~-4% +if %suffix% equ .jar set CLASSPATH=%CLASSPATH%;%KARAF_HOME%\lib\boot\%filename% +goto :EOF + +:CLASSPATH_END + +SET CHECK_ROOT_INSTANCE_RUNNING=true + +rem Execute the JVM or the load the profiler +if "%KARAF_PROFILER%" == "" goto :RUN + rem Execute the profiler if it has been configured + call :warn Loading profiler script: %KARAF_PROFILER_SCRIPT% + call %KARAF_PROFILER_SCRIPT% + +:RUN + SET OPTS=-Dkaraf.startLocalConsole=true -Dkaraf.startRemoteShell=true + SET MAIN=org.apache.karaf.main.Main + SET SHIFT=false + +:RUN_LOOP + if "%1" == "stop" goto :EXECUTE_STOP + if "%1" == "status" goto :EXECUTE_STATUS + if "%1" == "console" goto :EXECUTE_CONSOLE + if "%1" == "server" goto :EXECUTE_SERVER + if "%1" == "run" goto :EXECUTE_RUN + if "%1" == "daemon" goto :EXECUTE_DAEMON + if "%1" == "client" goto :EXECUTE_CLIENT + if "%1" == "clean" goto :EXECUTE_CLEAN + if "%1" == "debug" goto :EXECUTE_DEBUG + goto :EXECUTE + +:EXECUTE_STOP + SET MAIN=org.apache.karaf.main.Stop + SET CHECK_ROOT_INSTANCE_RUNNING=false + shift + goto :RUN_LOOP + +:EXECUTE_STATUS + SET MAIN=org.apache.karaf.main.Status + SET CHECK_ROOT_INSTANCE_RUNNING=false + shift + goto :RUN_LOOP + +:EXECUTE_CONSOLE + SET CHECK_ROOT_INSTANCE_RUNNING=false + shift + goto :RUN_LOOP + +:EXECUTE_SERVER + SET OPTS=-Dkaraf.startLocalConsole=false -Dkaraf.startRemoteShell=true + shift + goto :RUN_LOOP + +:EXECUTE_RUN + SET OPTS=-Dkaraf.startLocalConsole=false -Dkaraf.startRemoteShell=true -Dkaraf.log.console=ALL + shift + goto :RUN_LOOP + +:EXECUTE_DAEMON + SET OPTS=-Dkaraf.startLocalConsole=false -Dkaraf.startRemoteShell=true + SET KARAF_DAEMON=true + shift + goto :RUN_LOOP + +:EXECUTE_CLIENT + SET OPTS=-Dkaraf.startLocalConsole=true -Dkaraf.startRemoteShell=false + SET CHECK_ROOT_INSTANCE_RUNNING=false + shift + goto :RUN_LOOP + +:EXECUTE_CLEAN + pushd "%KARAF_DATA%" && (rmdir /S /Q "%KARAF_DATA%" 2>nul & popd) + shift + goto :RUN_LOOP + +:EXECUTE_DEBUG + if "%JAVA_DEBUG_OPTS%" == "" set JAVA_DEBUG_OPTS=%DEFAULT_JAVA_DEBUG_OPTS% + set JAVA_OPTS=%JAVA_DEBUG_OPTS% %JAVA_OPTS% + shift + goto :RUN_LOOP + +:EXECUTE + SET ARGS=%1 %2 %3 %4 %5 %6 %7 %8 + rem Execute the Java Virtual Machine + cd "%KARAF_BASE%" + + rem When users want to update the lib version of, they just need to create + rem a lib.next directory and on the new restart, it will replace the current lib directory. + if exist "%KARAF_HOME%\lib.next" ( + echo Updating libs... + RD /S /Q "%KARAF_HOME%\lib" + MOVE /Y "%KARAF_HOME%\lib.next" "%KARAF_HOME%\lib" + ) + + SET IS_RUNNABLE=false + if "%ROOT_INSTANCE_RUNNING%" == "false" SET IS_RUNNABLE=true + if "%CHECK_ROOT_INSTANCE_RUNNING%" == "false" SET IS_RUNNABLE=true + if "%IS_RUNNABLE%" == "true" ( + "%JAVA%" %JAVA_OPTS% %OPTS% ^ + -classpath "%CLASSPATH%" ^ + -Djava.endorsed.dirs="%JAVA_HOME%\jre\lib\endorsed;%JAVA_HOME%\lib\endorsed;%KARAF_HOME%\lib\endorsed" ^ + -Djava.ext.dirs="%JAVA_HOME%\jre\lib\ext;%JAVA_HOME%\lib\ext;%KARAF_HOME%\lib\ext" ^ + -Dkaraf.instances="%KARAF_HOME%\instances" ^ + -Dkaraf.home="%KARAF_HOME%" ^ + -Dkaraf.base="%KARAF_BASE%" ^ + -Dkaraf.etc="%KARAF_ETC%" ^ + -Dkaraf.restart.jvm.supported=true ^ + -Djava.io.tmpdir="%KARAF_DATA%\tmp" ^ + -Dkaraf.data="%KARAF_DATA%" ^ + -Djava.util.logging.config.file="%KARAF_BASE%\etc\java.util.logging.properties" ^ + %KARAF_OPTS% %MAIN% %ARGS% + ) else ( + echo There is a Root instance already running with name %ROOT_INSTANCE_NAME% and pid %ROOT_INSTANCE_PID% + goto :END + ) + + rem If KARAF_DAEMON is defined, auto-restart is bypassed and control given + rem back to the operating system + if defined "%KARAF_DAEMON%" ( + rem If Karaf has been started by winsw, the process can be restarted + rem by executing KARAF_DAEMON% restart! + rem https://github.com/kohsuke/winsw#restarting-service-from-itself + if defined "%WINSW_EXECUTABLE%" ( + if ERRORLEVEL 10 ( + echo Restarting ... + %KARAF_DAEMON% restart! + ) + ) else ( + if ERRORLEVEL 10 ( + echo Restarting JVM... + goto EXECUTE + ) + ) + ) + +rem # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + +:END + +endlocal + +if not "%PAUSE%" == "" pause + +:END_NO_PAUSE + EXIT /B %ERRORLEVEL% http://git-wip-us.apache.org/repos/asf/karaf/blob/d7a2185a/assemblies/features/base/src/main/filtered-resources/resources/bin/setenv ---------------------------------------------------------------------- diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/setenv b/assemblies/features/base/src/main/filtered-resources/resources/bin/setenv index edacd0b..7ea9f69 100755 --- a/assemblies/features/base/src/main/filtered-resources/resources/bin/setenv +++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/setenv @@ -20,7 +20,7 @@ # handle specific scripts; the SCRIPT_NAME is exactly the name of the Karaf # script: client, instance, shell, start, status, stop, karaf # -# if [ "$KARAF_SCRIPT" == "SCRIPT_NAME" ]; then +# if [ "${KARAF_SCRIPT}" == "SCRIPT_NAME" ]; then # Actions go here... # fi http://git-wip-us.apache.org/repos/asf/karaf/blob/d7a2185a/assemblies/features/base/src/main/filtered-resources/resources/bin/shell ---------------------------------------------------------------------- diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/shell b/assemblies/features/base/src/main/filtered-resources/resources/bin/shell index b65e80b..1b39fe9 100755 --- a/assemblies/features/base/src/main/filtered-resources/resources/bin/shell +++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/shell @@ -18,14 +18,15 @@ realpath() { OURPWD=${PWD} - cd "$(dirname "${1}")" - LINK=$(readlink "$(basename "${1}")") + cd "$(dirname "${1}")" || exit 2 + LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}') while [ "${LINK}" ]; do - cd "$(dirname "${LINK}")" - LINK=$(readlink "$(basename "${1}")") + echo "link: ${LINK}" >&2 + cd "$(dirname "${LINK}")" || exit 2 + LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}') done REALPATH="${PWD}/$(basename "${1}")" - cd "${OURPWD}" + cd "${OURPWD}" || exit 2 echo "${REALPATH}" } @@ -34,279 +35,24 @@ DIRNAME=$(dirname "${REALNAME}") PROGNAME=$(basename "${REALNAME}") # -# Sourcing environment settings for karaf similar to tomcats setenv +# Load common functions # -KARAF_SCRIPT="shell" -export KARAF_SCRIPT -if [ -f "$DIRNAME/setenv" ]; then - . "$DIRNAME/setenv" -fi +. "${DIRNAME}/inc" # -# Check/Set up some easily accessible MIN/MAX params for JVM mem usage +# Sourcing environment settings for karaf similar to tomcats setenv # -if [ "x$JAVA_MIN_MEM" = "x" ]; then - JAVA_MIN_MEM=128M - export JAVA_MIN_MEM -fi -if [ "x$JAVA_MAX_MEM" = "x" ]; then - JAVA_MAX_MEM=512M - export JAVA_MAX_MEM +KARAF_SCRIPT="${PROGNAME}" +export KARAF_SCRIPT +if [ -f "${DIRNAME}/setenv" ]; then + . "${DIRNAME}/setenv" fi -warn() { - echo "${PROGNAME}: $*" -} - -die() { - warn "$*" - exit 1 -} - -detectOS() { - # OS specific support (must be 'true' or 'false'). - cygwin=false; - darwin=false; - aix=false; - os400=false; - case "`uname`" in - CYGWIN*) - cygwin=true - ;; - Darwin*) - darwin=true - ;; - AIX*) - aix=true - ;; - OS400*) - os400=true - ;; - esac - # For AIX, set an environment variable - if $aix; then - export LDR_CNTRL=MAXDATA=0xB0000000@DSA - echo $LDR_CNTRL - fi -} - -unlimitFD() { - # Use the maximum available, or set MAX_FD != -1 to use that - if [ "x$MAX_FD" = "x" ]; then - MAX_FD="maximum" - fi - - # Increase the maximum file descriptors if we can - if [ "$os400" = "false" ] && [ "$cygwin" = "false" ]; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ "$MAX_FD_LIMIT" != 'unlimited' ]; then - if [ $? -eq 0 ]; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ]; then - # use the system max - MAX_FD="$MAX_FD_LIMIT" - fi - - ulimit -n $MAX_FD > /dev/null - # echo "ulimit -n" `ulimit -n` - if [ $? -ne 0 ]; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query system maximum file descriptor limit: $MAX_FD_LIMIT" - fi - fi - fi -} - -locateHome() { - if [ "x$KARAF_HOME" != "x" ]; then - warn "Ignoring predefined value for KARAF_HOME" - fi - - # In POSIX shells, CDPATH may cause cd to write to stdout - (unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - KARAF_HOME=`cd "$DIRNAME/.."; pwd` - if [ ! -d "$KARAF_HOME" ]; then - die "KARAF_HOME is not valid: $KARAF_HOME" - fi -} - -locateBase() { - if [ "x$KARAF_BASE" != "x" ]; then - if [ ! -d "$KARAF_BASE" ]; then - die "KARAF_BASE is not valid: $KARAF_BASE" - fi - else - KARAF_BASE=$KARAF_HOME - fi -} - -locateData() { - if [ "x$KARAF_DATA" != "x" ]; then - if [ ! -d "$KARAF_DATA" ]; then - die "KARAF_DATA is not valid: $KARAF_DATA" - fi - else - KARAF_DATA=$KARAF_BASE/data - fi -} - -locateEtc() { - if [ "x$KARAF_ETC" != "x" ]; then - if [ ! -d "$KARAF_ETC" ]; then - die "KARAF_ETC is not valid: $KARAF_ETC" - fi - else - KARAF_ETC=$KARAF_BASE/etc - fi -} - -setupNativePath() { - # Support for loading native libraries - LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:$KARAF_BASE/lib:$KARAF_HOME/lib" - - # For Cygwin, set PATH from LD_LIBRARY_PATH - if $cygwin; then - LD_LIBRARY_PATH=`cygpath --path --windows "$LD_LIBRARY_PATH"` - PATH="$PATH;$LD_LIBRARY_PATH" - export PATH - fi - export LD_LIBRARY_PATH -} - -pathCanonical() { - dst="${1}" - while [ -h "${dst}" ] ; do - ls=`ls -ld "${dst}"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - dst="$link" - else - dst="`dirname "${dst}"`/$link" - fi - done - bas=`basename "${dst}"` - dir=`dirname "${dst}"` - if [ "$bas" != "$dir" ]; then - dst="`pathCanonical "$dir"`/$bas" - fi - echo "${dst}" | sed -e 's#//#/#g' -e 's#/./#/#g' -e 's#/[^/]*/../#/#g' -} - -locateJava() { - # Setup the Java Virtual Machine - if $cygwin ; then - [ -n "$JAVA" ] && JAVA=`cygpath --unix "$JAVA"` - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` - fi - - if [ "x$JAVA_HOME" = "x" ] && [ "$darwin" = "true" ]; then - JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home - fi - if [ "x$JAVA" = "x" ] && [ -r /etc/gentoo-release ] ; then - JAVA_HOME=`java-config --jre-home` - fi - if [ "x$JAVA" = "x" ]; then - if [ "x$JAVA_HOME" != "x" ]; then - if [ ! -d "$JAVA_HOME" ]; then - die "JAVA_HOME is not valid: $JAVA_HOME" - fi - JAVA="$JAVA_HOME/bin/java" - else - warn "JAVA_HOME not set; results may vary" - JAVA=`type java` - JAVA=`expr "$JAVA" : '.* \(/.*\)$'` - if [ "x$JAVA" = "x" ]; then - die "java command not found" - fi - fi - fi - if [ "x$JAVA_HOME" = "x" ]; then - JAVA_HOME="$(dirname $(dirname $(pathCanonical "$JAVA")))" - fi -} - -detectJVM() { - #echo "`$JAVA -version`" - # This service should call `java -version`, - # read stdout, and look for hints - if $JAVA -version 2>&1 | grep "^IBM" ; then - JVM_VENDOR="IBM" - # on OS/400, java -version does not contain IBM explicitly - elif $os400; then - JVM_VENDOR="IBM" - else - JVM_VENDOR="SUN" - fi - # echo "JVM vendor is $JVM_VENDOR" -} - -setupDebugOptions() { - if [ "x$JAVA_OPTS" = "x" ]; then - JAVA_OPTS="$DEFAULT_JAVA_OPTS" - fi - export JAVA_OPTS - - if [ "x$EXTRA_JAVA_OPTS" != "x" ]; then - JAVA_OPTS="$JAVA_OPTS $EXTRA_JAVA_OPTS" - fi - - # Set Debug options if enabled - if [ "x$KARAF_DEBUG" != "x" ]; then - # Use the defaults if JAVA_DEBUG_OPTS was not set - if [ "x$JAVA_DEBUG_OPTS" = "x" ]; then - JAVA_DEBUG_OPTS="$DEFAULT_JAVA_DEBUG_OPTS" - fi - - JAVA_OPTS="$JAVA_DEBUG_OPTS $JAVA_OPTS" - warn "Enabling Java debug options: $JAVA_DEBUG_OPTS" - fi -} - -setupDefaults() { - DEFAULT_JAVA_OPTS="-Xms$JAVA_MIN_MEM -Xmx$JAVA_MAX_MEM " - - #Set the JVM_VENDOR specific JVM flags - if [ "$JVM_VENDOR" = "SUN" ]; then - # permgen was removed in Java 8 - VERSION=`$JAVA -version 2>&1 | egrep '"([0-9].[0-9]\..*[0-9]).*"' | awk '{print substr($3,2,length($3)-2)}' | awk '{print substr($1, 3, 3)}' | sed -e 's;\.;;g'` - if [ "$VERSION" -lt "80" ]; then - # Check some easily accessible MIN/MAX params for JVM mem usage - if [ "x$JAVA_PERM_MEM" != "x" ]; then - DEFAULT_JAVA_OPTS="$DEFAULT_JAVA_OPTS -XX:PermSize=$JAVA_PERM_MEM" - fi - if [ "x$JAVA_MAX_PERM_MEM" != "x" ]; then - DEFAULT_JAVA_OPTS="$DEFAULT_JAVA_OPTS -XX:MaxPermSize=$JAVA_MAX_PERM_MEM" - fi - fi - DEFAULT_JAVA_OPTS="-server $DEFAULT_JAVA_OPTS -Dcom.sun.management.jmxremote" - elif [ "$JVM_VENDOR" = "IBM" ]; then - if $os400; then - DEFAULT_JAVA_OPTS="$DEFAULT_JAVA_OPTS" - elif $aix; then - DEFAULT_JAVA_OPTS="-Xverify:none -Xdump:heap -Xlp $DEFAULT_JAVA_OPTS" - else - DEFAULT_JAVA_OPTS="-Xverify:none $DEFAULT_JAVA_OPTS" - fi - fi - +setupClassPath() { # Setup classpath - CLASSPATH="$KARAF_HOME/system/org/apache/karaf/shell/org.apache.karaf.shell.core/@@project.version@@/org.apache.karaf.shell.core-@@project.version@@.jar" - CLASSPATH="$CLASSPATH:$KARAF_HOME/system/org/ops4j/pax/logging/pax-logging-api/@@pax.logging.version@@/pax-logging-api-@@pax.logging.version@@.jar" - CLASSPATH="$CLASSPATH:$KARAF_HOME/system/org/jline/jline/@@jline.version@@/jline-@@jline.version@@.jar" - - DEFAULT_JAVA_DEBUG_PORT="5005" - if [ "x$JAVA_DEBUG_PORT" = "x" ]; then - JAVA_DEBUG_PORT="$DEFAULT_JAVA_DEBUG_PORT" - fi - DEFAULT_JAVA_DEBUG_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=$JAVA_DEBUG_PORT" - - ## - ## TODO: Move to conf/profiler/yourkit.{sh|cmd} - ## - # Uncomment to enable YourKit profiling - #DEFAULT_JAVA_DEBUG_OPTS="-Xrunyjpagent" + CLASSPATH="${KARAF_HOME}/system/org/apache/karaf/shell/org.apache.karaf.shell.core/@@project.version@@/org.apache.karaf.shell.core-@@project.version@@.jar" + CLASSPATH="${CLASSPATH}:${KARAF_HOME}/system/org/ops4j/pax/logging/pax-logging-api/@@pax.logging.version@@/pax-logging-api-@@pax.logging.version@@.jar" + CLASSPATH="${CLASSPATH}:${KARAF_HOME}/system/org/jline/jline/@@jline.version@@/jline-@@jline.version@@.jar" } init() { @@ -340,24 +86,27 @@ init() { # Setup default options setupDefaults + # Setup classpath + setupClassPath + # Install debug options setupDebugOptions - } run() { - - if $cygwin; then - KARAF_HOME=`cygpath --path --windows "$KARAF_HOME"` - KARAF_BASE=`cygpath --path --windows "$KARAF_BASE"` - KARAF_DATA=`cygpath --path --windows "$KARAF_DATA"` - KARAF_ETC=`cygpath --path --windows "$KARAF_ETC"` - if [ ! -z "$CLASSPATH" ]; then - CLASSPATH=`cygpath --path --windows "$CLASSPATH"` - fi - fi - - exec "$JAVA" $JAVA_OPTS -Dkaraf.instances="${KARAF_HOME}/instances" -Dkaraf.home="$KARAF_HOME" -Dkaraf.base="$KARAF_BASE" -Dkaraf.etc="$KARAF_ETC" -Dkaraf.data="$KARAF_DATA" -Djava.io.tmpdir="$KARAF_DATA/tmp" -Djava.util.logging.config.file="$KARAF_BASE/etc/java.util.logging.properties" $KARAF_OPTS $OPTS -classpath "$CLASSPATH" org.apache.karaf.shell.impl.console.standalone.Main --classpath="$KARAF_HOME/system" "$@" + convertPaths + exec "${JAVA}" ${JAVA_OPTS} \ + -Dkaraf.instances="${KARAF_HOME}/instances" \ + -Dkaraf.home="${KARAF_HOME}" \ + -Dkaraf.base="${KARAF_BASE}" \ + -Dkaraf.etc="${KARAF_ETC}" \ + -Dkaraf.data="${KARAF_DATA}" \ + -Djava.io.tmpdir="${KARAF_DATA}/tmp" \ + -Djava.util.logging.config.file="${KARAF_BASE}/etc/java.util.logging.properties" \ + ${KARAF_OPTS} \ + ${OPTS} \ + -classpath "${CLASSPATH}" \ + org.apache.karaf.shell.impl.console.standalone.Main "$@" } main() { http://git-wip-us.apache.org/repos/asf/karaf/blob/d7a2185a/assemblies/features/base/src/main/filtered-resources/resources/bin/start ---------------------------------------------------------------------- diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/start b/assemblies/features/base/src/main/filtered-resources/resources/bin/start index b700006..19fd11b 100755 --- a/assemblies/features/base/src/main/filtered-resources/resources/bin/start +++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/start @@ -18,14 +18,15 @@ realpath() { OURPWD=${PWD} - cd "$(dirname "${1}")" - LINK=$(readlink "$(basename "${1}")") + cd "$(dirname "${1}")" || exit 2 + LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}') while [ "${LINK}" ]; do - cd "$(dirname "${LINK}")" - LINK=$(readlink "$(basename "${1}")") + echo "link: ${LINK}" >&2 + cd "$(dirname "${LINK}")" || exit 2 + LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}') done REALPATH="${PWD}/$(basename "${1}")" - cd "${OURPWD}" + cd "${OURPWD}" || exit 2 echo "${REALPATH}" } @@ -34,137 +35,38 @@ DIRNAME=$(dirname "${REALNAME}") PROGNAME=$(basename "${REALNAME}") # -# Sourcing environment settings for karaf similar to tomcats setenv +# Load common functions # -KARAF_SCRIPT="start" +. "${DIRNAME}/inc" + +# +# Sourcing environment settings for karaf similar to tomcats setenv +# +KARAF_SCRIPT="${PROGNAME}" export KARAF_SCRIPT -if [ -f "$DIRNAME/setenv" ]; then - . "$DIRNAME/setenv" +if [ -f "${DIRNAME}/setenv" ]; then + . "${DIRNAME}/setenv" fi -warn() { - echo "${PROGNAME}: $*" -} - -die() { - warn "$*" - exit 1 -} - -detectOS() { - # OS specific support (must be 'true' or 'false'). - cygwin=false; - darwin=false; - aix=false; - os400=false; - case "`uname`" in - CYGWIN*) - cygwin=true - ;; - Darwin*) - darwin=true - ;; - AIX*) - aix=true - ;; - OS400*) - os400=true - ;; - esac - # For AIX, set an environment variable - if $aix; then - export LDR_CNTRL=MAXDATA=0xB0000000@DSA - echo $LDR_CNTRL - fi -} - -locateHome() { - if [ "x$KARAF_HOME" != "x" ]; then - warn "Ignoring predefined value for KARAF_HOME" - fi - - # In POSIX shells, CDPATH may cause cd to write to stdout - (unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - KARAF_HOME=`cd $DIRNAME/..; pwd` - if [ ! -d "$KARAF_HOME" ]; then - die "KARAF_HOME is not valid: $KARAF_HOME" - fi -} - -locateBase() { - if [ "x$KARAF_BASE" != "x" ]; then - if [ ! -d "$KARAF_BASE" ]; then - die "KARAF_BASE is not valid: $KARAF_BASE" - fi - else - KARAF_BASE=$KARAF_HOME - fi -} - -locateData() { - if [ "x$KARAF_DATA" != "x" ]; then - if [ ! -d "$KARAF_DATA" ]; then - die "KARAF_DATA is not valid: $KARAF_DATA" - fi - else - KARAF_DATA=$KARAF_BASE/data - fi -} - -locateEtc() { - if [ "x$KARAF_ETC" != "x" ]; then - if [ ! -d "$KARAF_ETC" ]; then - die "KARAF_ETC is not valid: $KARAF_ETC" - fi - else - KARAF_ETC=$KARAF_BASE/etc - fi -} - -enableRedirect() { - if [ "x$KARAF_REDIRECT" != "x" ]; then - warn "Redirecting Karaf output to $KARAF_REDIRECT" - else - KARAF_REDIRECT="/dev/null" - fi -} - init() { # Determine if there is special OS handling we must perform detectOS # Locate the Karaf home directory locateHome - - # Locate the Karaf base directory - locateBase - - # Locate the Karaf data directory - locateData - - # Locate the Karaf etc directory - locateEtc - - # Enable or not the Karaf output redirection - enableRedirect } run() { - if $cygwin; then - KARAF_HOME=`cygpath --path --windows "$KARAF_HOME"` - KARAF_BASE=`cygpath --path --windows "$KARAF_BASE"` - KARAF_DATA=`cygpath --path --windows "$KARAF_DATA"` - KARAF_ETC=`cygpath --path --windows "$KARAF_ETC"` - if [ ! -z "$CLASSPATH" ]; then - CLASSPATH=`cygpath --path --windows "$CLASSPATH"` - fi - fi - # Ensure the log directory exists -- we need to have a place to redirect stdout/stderr - if [ ! -d "$KARAF_DATA/log" ]; then - mkdir -p "$KARAF_DATA/log" + convertPaths + + # Enable redirect + if [ "x${KARAF_REDIRECT}" != "x" ]; then + warn "Redirecting Karaf output to ${KARAF_REDIRECT}" + else + KARAF_REDIRECT="/dev/null" fi - exec "$KARAF_HOME"/bin/karaf server "$@" >> "$KARAF_REDIRECT" 2>&1 & + + exec "${KARAF_HOME}/bin/karaf" server "$@" >> "${KARAF_REDIRECT}" 2>&1 & } main() { http://git-wip-us.apache.org/repos/asf/karaf/blob/d7a2185a/assemblies/features/base/src/main/filtered-resources/resources/bin/status ---------------------------------------------------------------------- diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/status b/assemblies/features/base/src/main/filtered-resources/resources/bin/status index 31e9e17..4f6ea5b 100755 --- a/assemblies/features/base/src/main/filtered-resources/resources/bin/status +++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/status @@ -18,14 +18,15 @@ realpath() { OURPWD=${PWD} - cd "$(dirname "${1}")" - LINK=$(readlink "$(basename "${1}")") + cd "$(dirname "${1}")" || exit 2 + LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}') while [ "${LINK}" ]; do - cd "$(dirname "${LINK}")" - LINK=$(readlink "$(basename "${1}")") + echo "link: ${LINK}" >&2 + cd "$(dirname "${LINK}")" || exit 2 + LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}') done REALPATH="${PWD}/$(basename "${1}")" - cd "${OURPWD}" + cd "${OURPWD}" || exit 2 echo "${REALPATH}" } @@ -34,126 +35,30 @@ DIRNAME=$(dirname "${REALNAME}") PROGNAME=$(basename "${REALNAME}") # -# Sourcing environment settings for karaf similar to tomcats setenv +# Load common functions # -KARAF_SCRIPT="status" +. "${DIRNAME}/inc" + +# +# Sourcing environment settings for karaf similar to tomcats setenv +# +KARAF_SCRIPT="${PROGNAME}" export KARAF_SCRIPT -if [ -f "$DIRNAME/setenv" ]; then - . "$DIRNAME/setenv" +if [ -f "${DIRNAME}/setenv" ]; then + . "${DIRNAME}/setenv" fi -warn() { - echo "${PROGNAME}: $*" -} - -die() { - warn "$*" - exit 1 -} - -detectOS() { - # OS specific support (must be 'true' or 'false'). - cygwin=false; - darwin=false; - aix=false; - os400=false; - case "`uname`" in - CYGWIN*) - cygwin=true - ;; - Darwin*) - darwin=true - ;; - AIX*) - aix=true - ;; - OS400*) - os400=true - ;; - esac - # For AIX, set an environment variable - if $aix; then - export LDR_CNTRL=MAXDATA=0xB0000000@DSA - echo $LDR_CNTRL - fi -} - -locateHome() { - if [ "x$KARAF_HOME" != "x" ]; then - warn "Ignoring predefined value for KARAF_HOME" - fi - - # In POSIX shells, CDPATH may cause cd to write to stdout - (unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - KARAF_HOME=`cd $DIRNAME/..; pwd` - if [ ! -d "$KARAF_HOME" ]; then - die "KARAF_HOME is not valid: $KARAF_HOME" - fi -} - -locateBase() { - if [ "x$KARAF_BASE" != "x" ]; then - if [ ! -d "$KARAF_BASE" ]; then - die "KARAF_BASE is not valid: $KARAF_BASE" - fi - else - KARAF_BASE=$KARAF_HOME - fi -} - -locateData() { - if [ "x$KARAF_DATA" != "x" ]; then - if [ ! -d "$KARAF_DATA" ]; then - die "KARAF_DATA is not valid: $KARAF_DATA" - fi - else - KARAF_DATA=$KARAF_BASE/data - fi -} - -locateEtc() { - if [ "x$KARAF_ETC" != "x" ]; then - if [ ! -d "$KARAF_ETC" ]; then - die "KARAF_ETC is not valid: $KARAF_ETC" - fi - else - KARAF_ETC=$KARAF_BASE/etc - fi -} - init() { # Determine if there is special OS handling we must perform detectOS # Locate the Karaf home directory locateHome - - # Locate the Karaf base directory - locateBase - - # Locate the Karaf data directory - locateData - - # Locate the Karaf etc directory - locateEtc } run() { - if $cygwin; then - KARAF_HOME=`cygpath --path --windows "$KARAF_HOME"` - KARAF_BASE=`cygpath --path --windows "$KARAF_BASE"` - KARAF_DATA=`cygpath --path --windows "$KARAF_DATA"` - KARAF_ETC=`cygpath --path --windows "$KARAF_ETC"` - if [Â ! -z "$CLASSPATH" ]; then - CLASSPATH=`cygpath --path --windows "$CLASSPATH"` - fi - fi - # Ensure the log directory exists -- we need to have a place to redirect stdout/stderr - if [ ! -d "$KARAF_DATA/log" ]; then - mkdir -p "$KARAF_DATA/log" - fi - exec "$KARAF_HOME"/bin/karaf status "$@" + convertPaths + exec "${KARAF_HOME}/bin/karaf" status "$@" } main() { http://git-wip-us.apache.org/repos/asf/karaf/blob/d7a2185a/assemblies/features/base/src/main/filtered-resources/resources/bin/stop ---------------------------------------------------------------------- diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/stop b/assemblies/features/base/src/main/filtered-resources/resources/bin/stop index 695884e..51b61d8 100755 --- a/assemblies/features/base/src/main/filtered-resources/resources/bin/stop +++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/stop @@ -18,14 +18,15 @@ realpath() { OURPWD=${PWD} - cd "$(dirname "${1}")" - LINK=$(readlink "$(basename "${1}")") + cd "$(dirname "${1}")" || exit 2 + LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}') while [ "${LINK}" ]; do - cd "$(dirname "${LINK}")" - LINK=$(readlink "$(basename "${1}")") + echo "link: ${LINK}" >&2 + cd "$(dirname "${LINK}")" || exit 2 + LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}') done REALPATH="${PWD}/$(basename "${1}")" - cd "${OURPWD}" + cd "${OURPWD}" || exit 2 echo "${REALPATH}" } @@ -34,126 +35,30 @@ DIRNAME=$(dirname "${REALNAME}") PROGNAME=$(basename "${REALNAME}") # -# Sourcing environment settings for karaf similar to tomcats setenv +# Load common functions # -KARAF_SCRIPT="stop" +. "${DIRNAME}/inc" + +# +# Sourcing environment settings for karaf similar to tomcats setenv +# +KARAF_SCRIPT="${PROGNAME}" export KARAF_SCRIPT -if [ -f "$DIRNAME/setenv" ]; then - . "$DIRNAME/setenv" +if [ -f "${DIRNAME}/setenv" ]; then + . "${DIRNAME}/setenv" fi -warn() { - echo "${PROGNAME}: $*" -} - -die() { - warn "$*" - exit 1 -} - -detectOS() { - # OS specific support (must be 'true' or 'false'). - cygwin=false; - darwin=false; - aix=false; - os400=false; - case "`uname`" in - CYGWIN*) - cygwin=true - ;; - Darwin*) - darwin=true - ;; - AIX*) - aix=true - ;; - OS400*) - os400=true - ;; - esac - # For AIX, set an environment variable - if $aix; then - export LDR_CNTRL=MAXDATA=0xB0000000@DSA - echo $LDR_CNTRL - fi -} - -locateHome() { - if [ "x$KARAF_HOME" != "x" ]; then - warn "Ignoring predefined value for KARAF_HOME" - fi - - # In POSIX shells, CDPATH may cause cd to write to stdout - (unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - KARAF_HOME=`cd $DIRNAME/..; pwd` - if [ ! -d "$KARAF_HOME" ]; then - die "KARAF_HOME is not valid: $KARAF_HOME" - fi -} - -locateBase() { - if [ "x$KARAF_BASE" != "x" ]; then - if [ ! -d "$KARAF_BASE" ]; then - die "KARAF_BASE is not valid: $KARAF_BASE" - fi - else - KARAF_BASE=$KARAF_HOME - fi -} - -locateData() { - if [ "x$KARAF_DATA" != "x" ]; then - if [ ! -d "$KARAF_DATA" ]; then - die "KARAF_DATA is not valid: $KARAF_DATA" - fi - else - KARAF_DATA=$KARAF_BASE/data - fi -} - -locateEtc() { - if [ "x$KARAF_ETC" != "x" ]; then - if [ ! -d "$KARAF_ETC" ]; then - die "KARAF_ETC is not valid: $KARAF_ETC" - fi - else - KARAF_ETC=$KARAF_BASE/etc - fi -} - init() { # Determine if there is special OS handling we must perform detectOS # Locate the Karaf home directory locateHome - - # Locate the Karaf base directory - locateBase - - # Locate the Karaf data directory - locateData - - # Locat the Karaf etc directory - locateEtc } run() { - if $cygwin; then - KARAF_HOME=`cygpath --path --windows "$KARAF_HOME"` - KARAF_BASE=`cygpath --path --windows "$KARAF_BASE"` - KARAF_DATA=`cygpath --path --windows "$KARAF_DATA"` - KARAF_ETC=`cygpath --path --windows "$KARAF_ETC"` - if [ ! -z "$CLASSPATH" ]; then - CLASSPATH=`cygpath --path --windows "$CLASSPATH"` - fi - fi - # Ensure the log directory exists -- we need to have a place to redirect stdout/stderr - if [ ! -d "$KARAF_DATA/log" ]; then - mkdir -p "$KARAF_DATA/log" - fi - exec "$KARAF_HOME"/bin/karaf stop "$@" + convertPaths + exec "${KARAF_HOME}/bin/karaf" stop "$@" } main() {
