#!/bin/sh # Command line wrapper for running JavaServer. # Copyright (c) 2005 Ken Neighbors # All Rights Reserved. This shell script is free software. It may be # used, redistributed and/or modified under the terms of the Perl # Artistic License or the GNU Lesser General Public License. # Location of JAR files required by JavaServer. JAVASERVER_CLASSPATH=/usr/share/java/javaserver.jar:/usr/share/java/log4j-1.2.jar # Parse command line arguments, looking for --debug-wrapper, --umask, # --classpath-from, and --java-opts-from. Any other arguments are # saved in JAVASERVER_OPTS to be passed to the JavaServer program. DEBUG_WRAPPER= UMASK= CLASSPATH_FROM= JAVA_OPTS_FROM= JAVASERVER_OPTS= while [ $# -gt 0 ]; do case "$1" in --debug-wrapper) DEBUG_WRAPPER="true" shift ;; --umask) UMASK=$2 shift shift ;; --umask=*) UMASK=${1#--umask=} shift ;; --classpath-from) CLASSPATH_FROM="$CLASSPATH_FROM $2" CLASSPATH_FROM=${CLASSPATH_FROM%/} # remove trailing slash shift shift ;; --classpath-from=*) CLASSPATH_FROM="$CLASSPATH_FROM ${1#--classpath-from=}" CLASSPATH_FROM=${CLASSPATH_FROM%/} # remove trailing slash shift ;; --java-opts-from) JAVA_OPTS_FROM="$JAVA_OPTS_FROM $2" JAVA_OPTS_FROM=${JAVA_OPTS_FROM%/} # remove trailing slash shift shift ;; --java-opts-from=*) JAVA_OPTS_FROM="$JAVA_OPTS_FROM ${1#--java-opts-from=}" JAVA_OPTS_FROM=${JAVA_OPTS_FROM%/} # remove trailing slash shift ;; --help) cat <] [--classpath-from=] [--java-opts-from=] [--authfile=] [] [--help] Help provided by JavaServer program: EOF CLASSPATH=$JAVASERVER_CLASSPATH export CLASSPATH exec java com.zzo.javaserver.JavaServer --help ;; *) JAVASERVER_OPTS="$JAVASERVER_OPTS $1" shift ;; esac done # Set umask. if [ -n "$DEBUG_WRAPPER" ]; then UMASK_OLD=`umask` if [ -n "$UMASK" ]; then echo >&2 "Changing umask from $UMASK_OLD to $UMASK" else echo >&2 "Leaving umask at $UMASK_OLD" fi fi if [ -n "$UMASK" ]; then umask $UMASK fi # The following function reads all lines from a file and adds each # line to VARIABLE, separated by the character specified as the second # argument. If a directory is given as the first argument, then this # function processes each file in that directory which is listed by # the run-parts command. # Synopsis: add_to_variable $FILE_OR_DIRECTORY $SEPARATOR function add_to_variable () { if [ -d "$1" ]; then for file in `run-parts $1 --list`; do if [ -n "$DEBUG_WRAPPER" ]; then echo >&2 " $1 (directory)" fi add_to_variable $file "$2" done elif [ -e "$1" ]; then for line in `cat $1 | xargs`; do if [ -n "$DEBUG_WRAPPER" ]; then echo >&2 " $1: $line" fi VARIABLE="$VARIABLE$2$line" done else echo >&2 "$1 does not exist; ignored" fi } # Construct CLASSPATH from --classpath-from options. if [ -n "$DEBUG_WRAPPER" ]; then echo >&2 "Constructing CLASSPATH ..." echo >&2 " JavaServer CLASSPATH: $JAVASERVER_CLASSPATH" if [ -n "$CLASSPATH" ]; then echo >&2 " existing CLASSPATH: $CLASSPATH" fi fi VARIABLE=$CLASSPATH for source in $CLASSPATH_FROM; do add_to_variable $source ":" done CLASSPATH=$VARIABLE CLASSPATH=${CLASSPATH#:} # remove leading colon # Add location of JavaServer JAR files to beginning of CLASSPATH CLASSPATH=$JAVASERVER_CLASSPATH:$CLASSPATH CLASSPATH=${CLASSPATH%:} # remove trailing colon export CLASSPATH if [ -n "$DEBUG_WRAPPER" ]; then echo >&2 "Final CLASSPATH: $CLASSPATH" fi # Construct JAVA_OPTS from --java-opts-from options. The following # function reads all lines from a file and adds each line to the # JAVA_OPTS. If a directory is given as an argument, then this # function processes each file in that directory returned by the # run-parts command. if [ -n "$DEBUG_WRAPPER" ]; then echo >&2 "Constructing JAVA_OPTS ..." if [ -n "$JAVA_OPTS" ]; then echo >&2 " existing JAVA_OPTS: $JAVA_OPTS" fi fi VARIABLE=$JAVA_OPTS for source in $JAVA_OPTS_FROM; do add_to_variable $source " " done JAVA_OPTS=$VARIABLE export JAVA_OPTS if [ -n "$DEBUG_WRAPPER" ]; then echo >&2 "Final JAVA_OPTS: $JAVA_OPTS" fi # Execute the JavaServer program, passing along any command line arguments. if [ -n "$DEBUG_WRAPPER" ]; then echo >&2 "exec java $JAVA_OPTS com.zzo.javaserver.JavaServer $JAVASERVER_OPTS" fi exec java $JAVA_OPTS com.zzo.javaserver.JavaServer $JAVASERVER_OPTS