增加初始版本
diff --git a/bin/bootstrap.jar b/bin/bootstrap.jar
new file mode 100644
index 0000000..7ed72fb
--- /dev/null
+++ b/bin/bootstrap.jar
Binary files differ
diff --git a/bin/catalina-tasks.xml b/bin/catalina-tasks.xml
new file mode 100644
index 0000000..c121d9b
--- /dev/null
+++ b/bin/catalina-tasks.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>

+<!--

+ 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.

+-->

+<!--

+  XML file for importing Catalina ant tasks.

+  <import file="${catalina.home}/bin/catalina-tasks.xml"/>

+-->

+

+<project name="catalina-tasks">

+  <description>Catalina Ant Manager, JMX and JSPC Tasks</description>

+  <!-- set catalina.home if it's not already set -->

+  <dirname property="catalina.home.bin.dir" file="${ant.file.catalina-tasks}"/>

+  <property name="catalina.home" value="${catalina.home.bin.dir}/.."/>

+  <typedef resource="org/apache/catalina/ant/catalina.tasks">

+    <classpath>

+      <fileset file="${catalina.home}/bin/tomcat-juli.jar"/>

+      <fileset file="${catalina.home}/lib/tomcat-api.jar"/>

+      <fileset file="${catalina.home}/lib/tomcat-util.jar"/>

+      <fileset file="${catalina.home}/lib/jasper.jar"/>

+      <fileset file="${catalina.home}/lib/jasper-el.jar"/>

+      <fileset file="${catalina.home}/lib/el-api.jar"/>

+      <fileset file="${catalina.home}/lib/jsp-api.jar"/>

+      <fileset file="${catalina.home}/lib/servlet-api.jar"/>

+      <fileset file="${catalina.home}/lib/catalina-ant.jar"/>

+      <fileset file="${catalina.home}/lib/tomcat-coyote.jar"/>

+    </classpath>

+  </typedef>

+  <typedef resource="org/apache/catalina/ant/jmx/jmxaccessor.tasks">

+    <classpath>

+      <fileset file="${catalina.home}/lib/catalina-ant.jar"/>

+    </classpath>

+  </typedef>

+</project>

diff --git a/bin/catalina.bat b/bin/catalina.bat
new file mode 100644
index 0000000..1bf315d
--- /dev/null
+++ b/bin/catalina.bat
@@ -0,0 +1,323 @@
+@echo off

+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.

+

+if "%OS%" == "Windows_NT" setlocal

+rem ---------------------------------------------------------------------------

+rem Start/Stop Script for the CATALINA Server

+rem

+rem Environment Variable Prerequisites

+rem

+rem   Do not set the variables in this script. Instead put them into a script

+rem   setenv.bat in CATALINA_BASE/bin to keep your customizations separate.

+rem

+rem   CATALINA_HOME   May point at your Catalina "build" directory.

+rem

+rem   CATALINA_BASE   (Optional) Base directory for resolving dynamic portions

+rem                   of a Catalina installation.  If not present, resolves to

+rem                   the same directory that CATALINA_HOME points to.

+rem

+rem   CATALINA_OPTS   (Optional) Java runtime options used when the "start",

+rem                   "run" or "debug" command is executed.

+rem                   Include here and not in JAVA_OPTS all options, that should

+rem                   only be used by Tomcat itself, not by the stop process,

+rem                   the version command etc.

+rem                   Examples are heap size, GC logging, JMX ports etc.

+rem

+rem   CATALINA_TMPDIR (Optional) Directory path location of temporary directory

+rem                   the JVM should use (java.io.tmpdir).  Defaults to

+rem                   %CATALINA_BASE%\temp.

+rem

+rem   JAVA_HOME       Must point at your Java Development Kit installation.

+rem                   Required to run the with the "debug" argument.

+rem

+rem   JRE_HOME        Must point at your Java Runtime installation.

+rem                   Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME

+rem                   are both set, JRE_HOME is used.

+rem

+rem   JAVA_OPTS       (Optional) Java runtime options used when any command

+rem                   is executed.

+rem                   Include here and not in CATALINA_OPTS all options, that

+rem                   should be used by Tomcat and also by the stop process,

+rem                   the version command etc.

+rem                   Most options should go into CATALINA_OPTS.

+rem

+rem   JAVA_ENDORSED_DIRS (Optional) Lists of of semi-colon separated directories

+rem                   containing some jars in order to allow replacement of APIs

+rem                   created outside of the JCP (i.e. DOM and SAX from W3C).

+rem                   It can also be used to update the XML parser implementation.

+rem                   Defaults to $CATALINA_HOME/endorsed.

+rem

+rem   JPDA_TRANSPORT  (Optional) JPDA transport used when the "jpda start"

+rem                   command is executed. The default is "dt_socket".

+rem

+rem   JPDA_ADDRESS    (Optional) Java runtime options used when the "jpda start"

+rem                   command is executed. The default is 8000.

+rem

+rem   JPDA_SUSPEND    (Optional) Java runtime options used when the "jpda start"

+rem                   command is executed. Specifies whether JVM should suspend

+rem                   execution immediately after startup. Default is "n".

+rem

+rem   JPDA_OPTS       (Optional) Java runtime options used when the "jpda start"

+rem                   command is executed. If used, JPDA_TRANSPORT, JPDA_ADDRESS,

+rem                   and JPDA_SUSPEND are ignored. Thus, all required jpda

+rem                   options MUST be specified. The default is:

+rem

+rem                   -agentlib:jdwp=transport=%JPDA_TRANSPORT%,

+rem                       address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND%

+rem

+rem   LOGGING_CONFIG  (Optional) Override Tomcat's logging config file

+rem                   Example (all one line)

+rem                   set LOGGING_CONFIG="-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties"

+rem

+rem   LOGGING_MANAGER (Optional) Override Tomcat's logging manager

+rem                   Example (all one line)

+rem                   set LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"

+rem

+rem   TITLE           (Optional) Specify the title of Tomcat window. The default

+rem                   TITLE is Tomcat if it's not specified.

+rem                   Example (all one line)

+rem                   set TITLE=Tomcat.Cluster#1.Server#1 [%DATE% %TIME%]

+rem

+rem

+rem

+rem $Id: catalina.bat 1344732 2012-05-31 14:08:02Z kkolinko $

+rem ---------------------------------------------------------------------------

+

+rem Suppress Terminate batch job on CTRL+C

+if not ""%1"" == ""run"" goto mainEntry

+if "%TEMP%" == "" goto mainEntry

+if exist "%TEMP%\%~nx0.run" goto mainEntry

+echo Y>"%TEMP%\%~nx0.run"

+if not exist "%TEMP%\%~nx0.run" goto mainEntry

+echo Y>"%TEMP%\%~nx0.Y"

+call "%~f0" %* <"%TEMP%\%~nx0.Y"

+rem Use provided errorlevel

+set RETVAL=%ERRORLEVEL%

+del /Q "%TEMP%\%~nx0.Y" >NUL 2>&1

+exit /B %RETVAL%

+:mainEntry

+del /Q "%TEMP%\%~nx0.run" >NUL 2>&1

+

+rem Guess CATALINA_HOME if not defined

+set "CURRENT_DIR=%cd%"

+if not "%CATALINA_HOME%" == "" goto gotHome

+set "CATALINA_HOME=%CURRENT_DIR%"

+if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome

+cd ..

+set "CATALINA_HOME=%cd%"

+cd "%CURRENT_DIR%"

+:gotHome

+

+if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome

+echo The CATALINA_HOME environment variable is not defined correctly

+echo This environment variable is needed to run this program

+goto end

+:okHome

+

+rem Copy CATALINA_BASE from CATALINA_HOME if not defined

+if not "%CATALINA_BASE%" == "" goto gotBase

+set "CATALINA_BASE=%CATALINA_HOME%"

+:gotBase

+

+rem Ensure that any user defined CLASSPATH variables are not used on startup,

+rem but allow them to be specified in setenv.bat, in rare case when it is needed.

+set CLASSPATH=

+

+rem Get standard environment variables

+if not exist "%CATALINA_BASE%\bin\setenv.bat" goto checkSetenvHome

+call "%CATALINA_BASE%\bin\setenv.bat"

+goto setenvDone

+:checkSetenvHome

+if exist "%CATALINA_HOME%\bin\setenv.bat" call "%CATALINA_HOME%\bin\setenv.bat"

+:setenvDone

+

+rem Get standard Java environment variables

+if exist "%CATALINA_HOME%\bin\setclasspath.bat" goto okSetclasspath

+echo Cannot find "%CATALINA_HOME%\bin\setclasspath.bat"

+echo This file is needed to run this program

+goto end

+:okSetclasspath

+call "%CATALINA_HOME%\bin\setclasspath.bat" %1

+if errorlevel 1 goto end

+

+rem Add on extra jar file to CLASSPATH

+rem Note that there are no quotes as we do not want to introduce random

+rem quotes into the CLASSPATH

+if "%CLASSPATH%" == "" goto emptyClasspath

+set "CLASSPATH=%CLASSPATH%;"

+:emptyClasspath

+set "CLASSPATH=%CLASSPATH%%CATALINA_HOME%\bin\bootstrap.jar"

+

+if not "%CATALINA_TMPDIR%" == "" goto gotTmpdir

+set "CATALINA_TMPDIR=%CATALINA_BASE%\temp"

+:gotTmpdir

+

+rem Add tomcat-juli.jar to classpath

+rem tomcat-juli.jar can be over-ridden per instance

+if not exist "%CATALINA_BASE%\bin\tomcat-juli.jar" goto juliClasspathHome

+set "CLASSPATH=%CLASSPATH%;%CATALINA_BASE%\bin\tomcat-juli.jar"

+goto juliClasspathDone

+:juliClasspathHome

+set "CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\bin\tomcat-juli.jar"

+:juliClasspathDone

+

+if not "%LOGGING_CONFIG%" == "" goto noJuliConfig

+set LOGGING_CONFIG=-Dnop

+if not exist "%CATALINA_BASE%\conf\logging.properties" goto noJuliConfig

+set LOGGING_CONFIG=-Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties"

+:noJuliConfig

+set JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG%

+

+if not "%LOGGING_MANAGER%" == "" goto noJuliManager

+set LOGGING_MANAGER=-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager

+:noJuliManager

+set JAVA_OPTS=%JAVA_OPTS% %LOGGING_MANAGER%

+

+rem ----- Execute The Requested Command ---------------------------------------

+

+echo Using CATALINA_BASE:   "%CATALINA_BASE%"

+echo Using CATALINA_HOME:   "%CATALINA_HOME%"

+echo Using CATALINA_TMPDIR: "%CATALINA_TMPDIR%"

+if ""%1"" == ""debug"" goto use_jdk

+echo Using JRE_HOME:        "%JRE_HOME%"

+goto java_dir_displayed

+:use_jdk

+echo Using JAVA_HOME:       "%JAVA_HOME%"

+:java_dir_displayed

+echo Using CLASSPATH:       "%CLASSPATH%"

+

+set _EXECJAVA=%_RUNJAVA%

+set MAINCLASS=org.apache.catalina.startup.Bootstrap

+set ACTION=start

+set SECURITY_POLICY_FILE=

+set DEBUG_OPTS=

+set JPDA=

+

+if not ""%1"" == ""jpda"" goto noJpda

+set JPDA=jpda

+if not "%JPDA_TRANSPORT%" == "" goto gotJpdaTransport

+set JPDA_TRANSPORT=dt_socket

+:gotJpdaTransport

+if not "%JPDA_ADDRESS%" == "" goto gotJpdaAddress

+set JPDA_ADDRESS=8000

+:gotJpdaAddress

+if not "%JPDA_SUSPEND%" == "" goto gotJpdaSuspend

+set JPDA_SUSPEND=n

+:gotJpdaSuspend

+if not "%JPDA_OPTS%" == "" goto gotJpdaOpts

+set JPDA_OPTS=-agentlib:jdwp=transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND%

+:gotJpdaOpts

+shift

+:noJpda

+

+if ""%1"" == ""debug"" goto doDebug

+if ""%1"" == ""run"" goto doRun

+if ""%1"" == ""start"" goto doStart

+if ""%1"" == ""stop"" goto doStop

+if ""%1"" == ""configtest"" goto doConfigTest

+if ""%1"" == ""version"" goto doVersion

+

+echo Usage:  catalina ( commands ... )

+echo commands:

+echo   debug             Start Catalina in a debugger

+echo   debug -security   Debug Catalina with a security manager

+echo   jpda start        Start Catalina under JPDA debugger

+echo   run               Start Catalina in the current window

+echo   run -security     Start in the current window with security manager

+echo   start             Start Catalina in a separate window

+echo   start -security   Start in a separate window with security manager

+echo   stop              Stop Catalina

+echo   configtest        Run a basic syntax check on server.xml

+echo   version           What version of tomcat are you running?

+goto end

+

+:doDebug

+shift

+set _EXECJAVA=%_RUNJDB%

+set DEBUG_OPTS=-sourcepath "%CATALINA_HOME%\..\..\java"

+if not ""%1"" == ""-security"" goto execCmd

+shift

+echo Using Security Manager

+set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy"

+goto execCmd

+

+:doRun

+shift

+if not ""%1"" == ""-security"" goto execCmd

+shift

+echo Using Security Manager

+set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy"

+goto execCmd

+

+:doStart

+shift

+if not "%OS%" == "Windows_NT" goto noTitle

+if "%TITLE%" == "" set TITLE=Tomcat

+set _EXECJAVA=start "%TITLE%" %_RUNJAVA%

+goto gotTitle

+:noTitle

+set _EXECJAVA=start %_RUNJAVA%

+:gotTitle

+if not ""%1"" == ""-security"" goto execCmd

+shift

+echo Using Security Manager

+set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy"

+goto execCmd

+

+:doStop

+shift

+set ACTION=stop

+set CATALINA_OPTS=

+goto execCmd

+

+:doConfigTest

+shift

+set ACTION=configtest

+set CATALINA_OPTS=

+goto execCmd

+

+:doVersion

+%_EXECJAVA% -classpath "%CATALINA_HOME%\lib\catalina.jar" org.apache.catalina.util.ServerInfo

+goto end

+

+

+:execCmd

+rem Get remaining unshifted command line arguments and save them in the

+set CMD_LINE_ARGS=

+:setArgs

+if ""%1""=="""" goto doneSetArgs

+set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1

+shift

+goto setArgs

+:doneSetArgs

+

+rem Execute Java with the applicable properties

+if not "%JPDA%" == "" goto doJpda

+if not "%SECURITY_POLICY_FILE%" == "" goto doSecurity

+%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

+goto end

+:doSecurity

+%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

+goto end

+:doJpda

+if not "%SECURITY_POLICY_FILE%" == "" goto doSecurityJpda

+%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %JPDA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

+goto end

+:doSecurityJpda

+%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %JPDA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

+goto end

+

+:end

diff --git a/bin/catalina.sh b/bin/catalina.sh
new file mode 100755
index 0000000..c8d5493
--- /dev/null
+++ b/bin/catalina.sh
@@ -0,0 +1,547 @@
+#!/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.
+
+# -----------------------------------------------------------------------------
+# Control Script for the CATALINA 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.
+#
+#   CATALINA_HOME   May point at your Catalina "build" directory.
+#
+#   CATALINA_BASE   (Optional) Base directory for resolving dynamic portions
+#                   of a Catalina installation.  If not present, resolves to
+#                   the same directory that CATALINA_HOME points to.
+#
+#   CATALINA_OUT    (Optional) Full path to a file where stdout and stderr
+#                   will be redirected.
+#                   Default is $CATALINA_BASE/logs/catalina.out
+#
+#   CATALINA_OPTS   (Optional) Java runtime options used when the "start",
+#                   "run" or "debug" command is executed.
+#                   Include here and not in JAVA_OPTS all options, that should
+#                   only be used by Tomcat itself, not by the stop process,
+#                   the version command etc.
+#                   Examples are heap size, GC logging, JMX ports etc.
+#
+#   CATALINA_TMPDIR (Optional) Directory path location of temporary directory
+#                   the JVM should use (java.io.tmpdir).  Defaults to
+#                   $CATALINA_BASE/temp.
+#
+#   JAVA_HOME       Must point at your Java Development Kit installation.
+#                   Required to run the with the "debug" argument.
+#
+#   JRE_HOME        Must point at your Java Runtime installation.
+#                   Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME
+#                   are both set, JRE_HOME is used.
+#
+#   JAVA_OPTS       (Optional) Java runtime options used when any command
+#                   is executed.
+#                   Include here and not in CATALINA_OPTS all options, that
+#                   should be used by Tomcat and also by the stop process,
+#                   the version command etc.
+#                   Most options should go into CATALINA_OPTS.
+#
+#   JAVA_ENDORSED_DIRS (Optional) Lists of of colon separated directories
+#                   containing some jars in order to allow replacement of APIs
+#                   created outside of the JCP (i.e. DOM and SAX from W3C).
+#                   It can also be used to update the XML parser implementation.
+#                   Defaults to $CATALINA_HOME/endorsed.
+#
+#   JPDA_TRANSPORT  (Optional) JPDA transport used when the "jpda start"
+#                   command is executed. The default is "dt_socket".
+#
+#   JPDA_ADDRESS    (Optional) Java runtime options used when the "jpda start"
+#                   command is executed. The default is 8000.
+#
+#   JPDA_SUSPEND    (Optional) Java runtime options used when the "jpda start"
+#                   command is executed. Specifies whether JVM should suspend
+#                   execution immediately after startup. Default is "n".
+#
+#   JPDA_OPTS       (Optional) Java runtime options used when the "jpda start"
+#                   command is executed. If used, JPDA_TRANSPORT, JPDA_ADDRESS,
+#                   and JPDA_SUSPEND are ignored. Thus, all required jpda
+#                   options MUST be specified. The default is:
+#
+#                   -agentlib:jdwp=transport=$JPDA_TRANSPORT,
+#                       address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND
+#
+#   CATALINA_PID    (Optional) Path of the file which should contains the pid
+#                   of the catalina startup java process, when start (fork) is
+#                   used
+#
+#   LOGGING_CONFIG  (Optional) Override Tomcat's logging config file
+#                   Example (all one line)
+#                   LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"
+#
+#   LOGGING_MANAGER (Optional) Override Tomcat's logging manager
+#                   Example (all one line)
+#                   LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
+#
+# $Id: catalina.sh 1498485 2013-07-01 14:37:43Z markt $
+# -----------------------------------------------------------------------------
+
+# OS specific support.  $var _must_ be set to either true or false.
+cygwin=false
+darwin=false
+os400=false
+case "`uname`" in
+CYGWIN*) cygwin=true;;
+Darwin*) darwin=true;;
+OS400*) os400=true;;
+esac
+
+# resolve links - $0 may be a softlink
+PRG="$0"
+
+while [ -h "$PRG" ]; do
+  ls=`ls -ld "$PRG"`
+  link=`expr "$ls" : '.*-> \(.*\)$'`
+  if expr "$link" : '/.*' > /dev/null; then
+    PRG="$link"
+  else
+    PRG=`dirname "$PRG"`/"$link"
+  fi
+done
+
+# Get standard environment variables
+PRGDIR=`dirname "$PRG"`
+
+# Only set CATALINA_HOME if not already set
+[ -z "$CATALINA_HOME" ] && CATALINA_HOME=`cd "$PRGDIR/.." >/dev/null; pwd`
+
+# Copy CATALINA_BASE from CATALINA_HOME if not already set
+[ -z "$CATALINA_BASE" ] && CATALINA_BASE="$CATALINA_HOME"
+
+# Ensure that any user defined CLASSPATH variables are not used on startup,
+# but allow them to be specified in setenv.sh, in rare case when it is needed.
+CLASSPATH=
+
+if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then
+  . "$CATALINA_BASE/bin/setenv.sh"
+elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
+  . "$CATALINA_HOME/bin/setenv.sh"
+fi
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched
+if $cygwin; then
+  [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+  [ -n "$JRE_HOME" ] && JRE_HOME=`cygpath --unix "$JRE_HOME"`
+  [ -n "$CATALINA_HOME" ] && CATALINA_HOME=`cygpath --unix "$CATALINA_HOME"`
+  [ -n "$CATALINA_BASE" ] && CATALINA_BASE=`cygpath --unix "$CATALINA_BASE"`
+  [ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
+fi
+
+# For OS400
+if $os400; then
+  # Set job priority to standard for interactive (interactive - 6) by using
+  # the interactive priority - 6, the helper threads that respond to requests
+  # will be running at the same priority as interactive jobs.
+  COMMAND='chgjob job('$JOBNAME') runpty(6)'
+  system $COMMAND
+
+  # Enable multi threading
+  export QIBM_MULTI_THREADED=Y
+fi
+
+# Get standard Java environment variables
+if $os400; then
+  # -r will Only work on the os400 if the files are:
+  # 1. owned by the user
+  # 2. owned by the PRIMARY group of the user
+  # this will not work if the user belongs in secondary groups
+  . "$CATALINA_HOME"/bin/setclasspath.sh
+else
+  if [ -r "$CATALINA_HOME"/bin/setclasspath.sh ]; then
+    . "$CATALINA_HOME"/bin/setclasspath.sh
+  else
+    echo "Cannot find $CATALINA_HOME/bin/setclasspath.sh"
+    echo "This file is needed to run this program"
+    exit 1
+  fi
+fi
+
+# Add on extra jar files to CLASSPATH
+if [ ! -z "$CLASSPATH" ] ; then
+  CLASSPATH="$CLASSPATH":
+fi
+CLASSPATH="$CLASSPATH""$CATALINA_HOME"/bin/bootstrap.jar
+
+if [ -z "$CATALINA_OUT" ] ; then
+  CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
+fi
+
+if [ -z "$CATALINA_TMPDIR" ] ; then
+  # Define the java.io.tmpdir to use for Catalina
+  CATALINA_TMPDIR="$CATALINA_BASE"/temp
+fi
+
+# Add tomcat-juli.jar to classpath
+# tomcat-juli.jar can be over-ridden per instance
+if [ -r "$CATALINA_BASE/bin/tomcat-juli.jar" ] ; then
+  CLASSPATH=$CLASSPATH:$CATALINA_BASE/bin/tomcat-juli.jar
+else
+  CLASSPATH=$CLASSPATH:$CATALINA_HOME/bin/tomcat-juli.jar
+fi
+
+# Bugzilla 37848: When no TTY is available, don't output to console
+have_tty=0
+if [ "`tty`" != "not a tty" ]; then
+    have_tty=1
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin; then
+  JAVA_HOME=`cygpath --absolute --windows "$JAVA_HOME"`
+  JRE_HOME=`cygpath --absolute --windows "$JRE_HOME"`
+  CATALINA_HOME=`cygpath --absolute --windows "$CATALINA_HOME"`
+  CATALINA_BASE=`cygpath --absolute --windows "$CATALINA_BASE"`
+  CATALINA_TMPDIR=`cygpath --absolute --windows "$CATALINA_TMPDIR"`
+  CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
+  JAVA_ENDORSED_DIRS=`cygpath --path --windows "$JAVA_ENDORSED_DIRS"`
+fi
+
+# Set juli LogManager config file if it is present and an override has not been issued
+if [ -z "$LOGGING_CONFIG" ]; then
+  if [ -r "$CATALINA_BASE"/conf/logging.properties ]; then
+    LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"
+  else
+    # Bugzilla 45585
+    LOGGING_CONFIG="-Dnop"
+  fi
+fi
+
+if [ -z "$LOGGING_MANAGER" ]; then
+  LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
+fi
+
+# Uncomment the following line to make the umask available when using the
+# org.apache.catalina.security.SecurityListener
+#JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`"
+
+# ----- Execute The Requested Command -----------------------------------------
+
+# Bugzilla 37848: only output this if we have a TTY
+if [ $have_tty -eq 1 ]; then
+  echo "Using CATALINA_BASE:   $CATALINA_BASE"
+  echo "Using CATALINA_HOME:   $CATALINA_HOME"
+  echo "Using CATALINA_TMPDIR: $CATALINA_TMPDIR"
+  if [ "$1" = "debug" ] ; then
+    echo "Using JAVA_HOME:       $JAVA_HOME"
+  else
+    echo "Using JRE_HOME:        $JRE_HOME"
+  fi
+  echo "Using CLASSPATH:       $CLASSPATH"
+  if [ ! -z "$CATALINA_PID" ]; then
+    echo "Using CATALINA_PID:    $CATALINA_PID"
+  fi
+fi
+
+if [ "$1" = "jpda" ] ; then
+  if [ -z "$JPDA_TRANSPORT" ]; then
+    JPDA_TRANSPORT="dt_socket"
+  fi
+  if [ -z "$JPDA_ADDRESS" ]; then
+    JPDA_ADDRESS="8000"
+  fi
+  if [ -z "$JPDA_SUSPEND" ]; then
+    JPDA_SUSPEND="n"
+  fi
+  if [ -z "$JPDA_OPTS" ]; then
+    JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
+  fi
+  CATALINA_OPTS="$CATALINA_OPTS $JPDA_OPTS"
+  shift
+fi
+
+if [ "$1" = "debug" ] ; then
+  if $os400; then
+    echo "Debug command not available on OS400"
+    exit 1
+  else
+    shift
+    if [ "$1" = "-security" ] ; then
+      if [ $have_tty -eq 1 ]; then
+        echo "Using Security Manager"
+      fi
+      shift
+      exec "$_RUNJDB" "$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
+        -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
+        -sourcepath "$CATALINA_HOME"/../../java \
+        -Djava.security.manager \
+        -Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy \
+        -Dcatalina.base="$CATALINA_BASE" \
+        -Dcatalina.home="$CATALINA_HOME" \
+        -Djava.io.tmpdir="$CATALINA_TMPDIR" \
+        org.apache.catalina.startup.Bootstrap "$@" start
+    else
+      exec "$_RUNJDB" "$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
+        -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
+        -sourcepath "$CATALINA_HOME"/../../java \
+        -Dcatalina.base="$CATALINA_BASE" \
+        -Dcatalina.home="$CATALINA_HOME" \
+        -Djava.io.tmpdir="$CATALINA_TMPDIR" \
+        org.apache.catalina.startup.Bootstrap "$@" start
+    fi
+  fi
+
+elif [ "$1" = "run" ]; then
+
+  shift
+  if [ "$1" = "-security" ] ; then
+    if [ $have_tty -eq 1 ]; then
+      echo "Using Security Manager"
+    fi
+    shift
+    eval exec \"$_RUNJAVA\" \"$LOGGING_CONFIG\" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
+      -Djava.endorsed.dirs=\"$JAVA_ENDORSED_DIRS\" -classpath \"$CLASSPATH\" \
+      -Djava.security.manager \
+      -Djava.security.policy==\"$CATALINA_BASE/conf/catalina.policy\" \
+      -Dcatalina.base=\"$CATALINA_BASE\" \
+      -Dcatalina.home=\"$CATALINA_HOME\" \
+      -Djava.io.tmpdir=\"$CATALINA_TMPDIR\" \
+      org.apache.catalina.startup.Bootstrap "$@" start
+  else
+    eval exec \"$_RUNJAVA\" \"$LOGGING_CONFIG\" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
+      -Djava.endorsed.dirs=\"$JAVA_ENDORSED_DIRS\" -classpath \"$CLASSPATH\" \
+      -Dcatalina.base=\"$CATALINA_BASE\" \
+      -Dcatalina.home=\"$CATALINA_HOME\" \
+      -Djava.io.tmpdir=\"$CATALINA_TMPDIR\" \
+      org.apache.catalina.startup.Bootstrap "$@" start
+  fi
+
+elif [ "$1" = "start" ] ; then
+
+  if [ ! -z "$CATALINA_PID" ]; then
+    if [ -f "$CATALINA_PID" ]; then
+      if [ -s "$CATALINA_PID" ]; then
+        echo "Existing PID file found during start."
+        if [ -r "$CATALINA_PID" ]; then
+          PID=`cat "$CATALINA_PID"`
+          ps -p $PID >/dev/null 2>&1
+          if [ $? -eq 0 ] ; then
+            echo "Tomcat appears to still be running with PID $PID. Start aborted."
+            exit 1
+          else
+            echo "Removing/clearing stale PID file."
+            rm -f "$CATALINA_PID" >/dev/null 2>&1
+            if [ $? != 0 ]; then
+              if [ -w "$CATALINA_PID" ]; then
+                cat /dev/null > "$CATALINA_PID"
+              else
+                echo "Unable to remove or clear stale PID file. Start aborted."
+                exit 1
+              fi
+            fi
+          fi
+        else
+          echo "Unable to read PID file. Start aborted."
+          exit 1
+        fi
+      else
+        rm -f "$CATALINA_PID" >/dev/null 2>&1
+        if [ $? != 0 ]; then
+          if [ ! -w "$CATALINA_PID" ]; then
+            echo "Unable to remove or write to empty PID file. Start aborted."
+            exit 1
+          fi
+        fi
+      fi
+    fi
+  fi
+
+  shift
+  touch "$CATALINA_OUT"
+  if [ "$1" = "-security" ] ; then
+    if [ $have_tty -eq 1 ]; then
+      echo "Using Security Manager"
+    fi
+    shift
+    eval \"$_RUNJAVA\" \"$LOGGING_CONFIG\" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
+      -Djava.endorsed.dirs=\"$JAVA_ENDORSED_DIRS\" -classpath \"$CLASSPATH\" \
+      -Djava.security.manager \
+      -Djava.security.policy==\"$CATALINA_BASE/conf/catalina.policy\" \
+      -Dcatalina.base=\"$CATALINA_BASE\" \
+      -Dcatalina.home=\"$CATALINA_HOME\" \
+      -Djava.io.tmpdir=\"$CATALINA_TMPDIR\" \
+      org.apache.catalina.startup.Bootstrap "$@" start \
+      >> "$CATALINA_OUT" 2>&1 "&"
+
+  else
+    eval \"$_RUNJAVA\" \"$LOGGING_CONFIG\" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
+      -Djava.endorsed.dirs=\"$JAVA_ENDORSED_DIRS\" -classpath \"$CLASSPATH\" \
+      -Dcatalina.base=\"$CATALINA_BASE\" \
+      -Dcatalina.home=\"$CATALINA_HOME\" \
+      -Djava.io.tmpdir=\"$CATALINA_TMPDIR\" \
+      org.apache.catalina.startup.Bootstrap "$@" start \
+      >> "$CATALINA_OUT" 2>&1 "&"
+
+  fi
+
+  if [ ! -z "$CATALINA_PID" ]; then
+    echo $! > "$CATALINA_PID"
+  fi
+
+elif [ "$1" = "stop" ] ; then
+
+  shift
+
+  SLEEP=5
+  if [ ! -z "$1" ]; then
+    echo $1 | grep "[^0-9]" >/dev/null 2>&1
+    if [ $? -gt 0 ]; then
+      SLEEP=$1
+      shift
+    fi
+  fi
+
+  FORCE=0
+  if [ "$1" = "-force" ]; then
+    shift
+    FORCE=1
+  fi
+
+  if [ ! -z "$CATALINA_PID" ]; then
+    if [ -f "$CATALINA_PID" ]; then
+      if [ -s "$CATALINA_PID" ]; then
+        kill -0 `cat "$CATALINA_PID"` >/dev/null 2>&1
+        if [ $? -gt 0 ]; then
+          echo "PID file found but no matching process was found. Stop aborted."
+          exit 1
+        fi
+      else
+        echo "PID file is empty and has been ignored."
+      fi
+    else
+      echo "\$CATALINA_PID was set but the specified file does not exist. Is Tomcat running? Stop aborted."
+      exit 1
+    fi
+  fi
+
+  eval \"$_RUNJAVA\" $LOGGING_MANAGER $JAVA_OPTS \
+    -Djava.endorsed.dirs=\"$JAVA_ENDORSED_DIRS\" -classpath \"$CLASSPATH\" \
+    -Dcatalina.base=\"$CATALINA_BASE\" \
+    -Dcatalina.home=\"$CATALINA_HOME\" \
+    -Djava.io.tmpdir=\"$CATALINA_TMPDIR\" \
+    org.apache.catalina.startup.Bootstrap "$@" stop
+
+  if [ ! -z "$CATALINA_PID" ]; then
+    if [ -f "$CATALINA_PID" ]; then
+      while [ $SLEEP -ge 0 ]; do
+        kill -0 `cat "$CATALINA_PID"` >/dev/null 2>&1
+        if [ $? -gt 0 ]; then
+          rm -f "$CATALINA_PID" >/dev/null 2>&1
+          if [ $? != 0 ]; then
+            if [ -w "$CATALINA_PID" ]; then
+              cat /dev/null > "$CATALINA_PID"
+            else
+              echo "Tomcat stopped but the PID file could not be removed or cleared."
+            fi
+          fi
+          break
+        fi
+        if [ $SLEEP -gt 0 ]; then
+          sleep 1
+        fi
+        if [ $SLEEP -eq 0 ]; then
+          if [ $FORCE -eq 0 ]; then
+            echo "Tomcat did not stop in time. PID file was not removed."
+          fi
+        fi
+        SLEEP=`expr $SLEEP - 1 `
+      done
+    fi
+  fi
+
+  KILL_SLEEP_INTERVAL=5
+  if [ $FORCE -eq 1 ]; then
+    if [ -z "$CATALINA_PID" ]; then
+      echo "Kill failed: \$CATALINA_PID not set"
+    else
+      if [ -f "$CATALINA_PID" ]; then
+        PID=`cat "$CATALINA_PID"`
+        echo "Killing Tomcat with the PID: $PID"
+        kill -9 $PID
+        while [ $KILL_SLEEP_INTERVAL -ge 0 ]; do
+            kill -0 `cat "$CATALINA_PID"` >/dev/null 2>&1
+            if [ $? -gt 0 ]; then
+                rm -f "$CATALINA_PID" >/dev/null 2>&1
+                if [ $? != 0 ]; then
+                    echo "Tomcat was killed but the PID file could not be removed."
+                fi
+                break
+            fi
+            if [ $KILL_SLEEP_INTERVAL -gt 0 ]; then
+                sleep 1
+            fi
+            KILL_SLEEP_INTERVAL=`expr $KILL_SLEEP_INTERVAL - 1 `
+        done
+        if [ $KILL_SLEEP_INTERVAL -gt 0 ]; then
+            echo "Tomcat has not been killed completely yet. The process might be waiting on some system call or might be UNINTERRUPTIBLE."
+        fi
+      fi
+    fi
+  fi
+
+elif [ "$1" = "configtest" ] ; then
+
+    eval \"$_RUNJAVA\" $LOGGING_MANAGER $JAVA_OPTS \
+      -Djava.endorsed.dirs=\"$JAVA_ENDORSED_DIRS\" -classpath \"$CLASSPATH\" \
+      -Dcatalina.base=\"$CATALINA_BASE\" \
+      -Dcatalina.home=\"$CATALINA_HOME\" \
+      -Djava.io.tmpdir=\"$CATALINA_TMPDIR\" \
+      org.apache.catalina.startup.Bootstrap configtest
+    result=$?
+    if [ $result -ne 0 ]; then
+        echo "Configuration error detected!"
+    fi
+    exit $result
+
+elif [ "$1" = "version" ] ; then
+
+    "$_RUNJAVA"   \
+      -classpath "$CATALINA_HOME/lib/catalina.jar" \
+      org.apache.catalina.util.ServerInfo
+
+else
+
+  echo "Usage: catalina.sh ( commands ... )"
+  echo "commands:"
+  if $os400; then
+    echo "  debug             Start Catalina in a debugger (not available on OS400)"
+    echo "  debug -security   Debug Catalina with a security manager (not available on OS400)"
+  else
+    echo "  debug             Start Catalina in a debugger"
+    echo "  debug -security   Debug Catalina with a security manager"
+  fi
+  echo "  jpda start        Start Catalina under JPDA debugger"
+  echo "  run               Start Catalina in the current window"
+  echo "  run -security     Start in the current window with security manager"
+  echo "  start             Start Catalina in a separate window"
+  echo "  start -security   Start in a separate window with security manager"
+  echo "  stop              Stop Catalina, waiting up to 5 seconds for the process to end"
+  echo "  stop n            Stop Catalina, waiting up to n seconds for the process to end"
+  echo "  stop -force       Stop Catalina, wait up to 5 seconds and then use kill -KILL if still running"
+  echo "  stop n -force     Stop Catalina, wait up to n seconds and then use kill -KILL if still running"
+  echo "  configtest        Run a basic syntax check on server.xml - check exit code for result"
+  echo "  version           What version of tomcat are you running?"
+  echo "Note: Waiting for the process to end and use of the -force option require that \$CATALINA_PID is defined"
+  exit 1
+
+fi
diff --git a/bin/commons-daemon-native.tar.gz b/bin/commons-daemon-native.tar.gz
new file mode 100644
index 0000000..6d25918
--- /dev/null
+++ b/bin/commons-daemon-native.tar.gz
Binary files differ
diff --git a/bin/commons-daemon.jar b/bin/commons-daemon.jar
new file mode 100644
index 0000000..2b6b9c6
--- /dev/null
+++ b/bin/commons-daemon.jar
Binary files differ
diff --git a/bin/configtest.bat b/bin/configtest.bat
new file mode 100644
index 0000000..c3bfd89
--- /dev/null
+++ b/bin/configtest.bat
@@ -0,0 +1,59 @@
+@echo off

+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.

+

+if "%OS%" == "Windows_NT" setlocal

+rem ---------------------------------------------------------------------------

+rem Configuration test script for the CATALINA Server

+rem

+rem $Id: configtest.bat 1137560 2011-06-20 09:27:44Z rjung $

+rem ---------------------------------------------------------------------------

+

+rem Guess CATALINA_HOME if not defined

+set "CURRENT_DIR=%cd%"

+if not "%CATALINA_HOME%" == "" goto gotHome

+set "CATALINA_HOME=%CURRENT_DIR%"

+if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome

+cd ..

+set "CATALINA_HOME=%cd%"

+cd "%CURRENT_DIR%"

+:gotHome

+if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome

+echo The CATALINA_HOME environment variable is not defined correctly

+echo This environment variable is needed to run this program

+goto end

+:okHome

+

+set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"

+

+rem Check that target executable exists

+if exist "%EXECUTABLE%" goto okExec

+echo Cannot find "%EXECUTABLE%"

+echo This file is needed to run this program

+goto end

+:okExec

+

+rem Get remaining unshifted command line arguments and save them in the

+set CMD_LINE_ARGS=

+:setArgs

+if ""%1""=="""" goto doneSetArgs

+set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1

+shift

+goto setArgs

+:doneSetArgs

+

+call "%EXECUTABLE%" configtest %CMD_LINE_ARGS%

+

+:end

diff --git a/bin/configtest.sh b/bin/configtest.sh
new file mode 100755
index 0000000..f084e78
--- /dev/null
+++ b/bin/configtest.sh
@@ -0,0 +1,62 @@
+#!/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.
+
+# -----------------------------------------------------------------------------
+# Configuration Test Script for the CATALINA Server
+#
+# $Id: configtest.sh 1202062 2011-11-15 06:50:02Z mturk $
+# -----------------------------------------------------------------------------
+
+# Better OS/400 detection: see Bugzilla 31132
+os400=false
+case "`uname`" in
+OS400*) os400=true;;
+esac
+
+# resolve links - $0 may be a softlink
+PRG="$0"
+
+while [ -h "$PRG" ] ; do
+  ls=`ls -ld "$PRG"`
+  link=`expr "$ls" : '.*-> \(.*\)$'`
+  if expr "$link" : '/.*' > /dev/null; then
+    PRG="$link"
+  else
+    PRG=`dirname "$PRG"`/"$link"
+  fi
+done
+
+PRGDIR=`dirname "$PRG"`
+EXECUTABLE=catalina.sh
+
+# Check that target executable exists
+if $os400; then
+  # -x will Only work on the os400 if the files are:
+  # 1. owned by the user
+  # 2. owned by the PRIMARY group of the user
+  # this will not work if the user belongs in secondary groups
+  eval
+else
+  if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
+    echo "Cannot find $PRGDIR/$EXECUTABLE"
+    echo "The file is absent or does not have execute permission"
+    echo "This file is needed to run this program"
+    exit 1
+  fi
+fi
+
+exec "$PRGDIR"/"$EXECUTABLE" configtest "$@"
diff --git a/bin/cpappend.bat b/bin/cpappend.bat
new file mode 100644
index 0000000..b9b90c1
--- /dev/null
+++ b/bin/cpappend.bat
@@ -0,0 +1,35 @@
+@echo off

+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 ---------------------------------------------------------------------------

+rem Append to CLASSPATH

+rem

+rem $Id: cpappend.bat 562770 2007-08-04 22:13:58Z markt $

+rem ---------------------------------------------------------------------------

+

+rem Process the first argument

+if ""%1"" == """" goto end

+set CLASSPATH=%CLASSPATH%;%1

+shift

+

+rem Process the remaining arguments

+:setArgs

+if ""%1"" == """" goto doneSetArgs

+set CLASSPATH=%CLASSPATH% %1

+shift

+goto setArgs

+:doneSetArgs

+:end

diff --git a/bin/daemon.sh b/bin/daemon.sh
new file mode 100755
index 0000000..9a4640d
--- /dev/null
+++ b/bin/daemon.sh
@@ -0,0 +1,241 @@
+#!/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.
+#
+# -----------------------------------------------------------------------------
+# Commons Daemon wrapper script.
+#
+# $Id: daemon.sh 1202058 2011-11-15 06:37:12Z mturk $
+# -----------------------------------------------------------------------------
+#
+# resolve links - $0 may be a softlink
+ARG0="$0"
+while [ -h "$ARG0" ]; do
+  ls=`ls -ld "$ARG0"`
+  link=`expr "$ls" : '.*-> \(.*\)$'`
+  if expr "$link" : '/.*' > /dev/null; then
+    ARG0="$link"
+  else
+    ARG0="`dirname $ARG0`/$link"
+  fi
+done
+DIRNAME="`dirname $ARG0`"
+PROGRAM="`basename $ARG0`"
+while [ ".$1" != . ]
+do
+  case "$1" in
+    --java-home )
+        JAVA_HOME="$2"
+        shift; shift;
+        continue
+    ;;
+    --catalina-home )
+        CATALINA_HOME="$2"
+        shift; shift;
+        continue
+    ;;
+    --catalina-base )
+        CATALINA_BASE="$2"
+        shift; shift;
+        continue
+    ;;
+    --catalina-pid )
+        CATALINA_PID="$2"
+        shift; shift;
+        continue
+    ;;
+    --tomcat-user )
+        TOMCAT_USER="$2"
+        shift; shift;
+        continue
+    ;;
+    * )
+        break
+    ;;
+  esac
+done
+# OS specific support (must be 'true' or 'false').
+cygwin=false;
+darwin=false;
+case "`uname`" in
+    CYGWIN*)
+        cygwin=true
+        ;;
+    Darwin*)
+        darwin=true
+        ;;
+esac
+
+# Use the maximum available, or set MAX_FD != -1 to use that
+test ".$MAX_FD" = . && MAX_FD="maximum"
+# Setup parameters for running the jsvc
+#
+test ".$TOMCAT_USER" = . && TOMCAT_USER=tomcat
+# Set JAVA_HOME to working JDK or JRE
+# JAVA_HOME=/opt/jdk-1.6.0.22
+# If not set we'll try to guess the JAVA_HOME
+# from java binary if on the PATH
+#
+if [ -z "$JAVA_HOME" ]; then
+    JAVA_BIN="`which java 2>/dev/null || type java 2>&1`"
+    test -x "$JAVA_BIN" && JAVA_HOME="`dirname $JAVA_BIN`"
+    test ".$JAVA_HOME" != . && JAVA_HOME=`cd "$JAVA_HOME/.." >/dev/null; pwd`
+else
+    JAVA_BIN="$JAVA_HOME/bin/java"
+fi
+
+# Only set CATALINA_HOME if not already set
+test ".$CATALINA_HOME" = . && CATALINA_HOME=`cd "$DIRNAME/.." >/dev/null; pwd`
+test ".$CATALINA_BASE" = . && CATALINA_BASE="$CATALINA_HOME"
+test ".$CATALINA_MAIN" = . && CATALINA_MAIN=org.apache.catalina.startup.Bootstrap
+test ".$JSVC" = . && JSVC="$CATALINA_BASE/bin/jsvc"
+
+# Ensure that any user defined CLASSPATH variables are not used on startup,
+# but allow them to be specified in setenv.sh, in rare case when it is needed.
+CLASSPATH=
+JAVA_OPTS=
+if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then
+  . "$CATALINA_BASE/bin/setenv.sh"
+elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
+  . "$CATALINA_HOME/bin/setenv.sh"
+fi
+
+# Add on extra jar files to CLASSPATH
+test ".$CLASSPATH" != . && CLASSPATH="${CLASSPATH}:"
+CLASSPATH="$CLASSPATH$CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/commons-daemon.jar"
+
+test ".$CATALINA_OUT" = . && CATALINA_OUT="$CATALINA_BASE/logs/catalina-daemon.out"
+test ".$CATALINA_TMP" = . && CATALINA_TMP="$CATALINA_BASE/temp"
+
+# Add tomcat-juli.jar to classpath
+# tomcat-juli.jar can be over-ridden per instance
+if [ -r "$CATALINA_BASE/bin/tomcat-juli.jar" ] ; then
+  CLASSPATH="$CLASSPATH:$CATALINA_BASE/bin/tomcat-juli.jar"
+else
+  CLASSPATH="$CLASSPATH:$CATALINA_HOME/bin/tomcat-juli.jar"
+fi
+# Set juli LogManager config file if it is present and an override has not been issued
+if [ -z "$LOGGING_CONFIG" ]; then
+  if [ -r "$CATALINA_BASE/conf/logging.properties" ]; then
+    LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"
+  else
+    # Bugzilla 45585
+    LOGGING_CONFIG="-Dnop"
+  fi
+fi
+
+test ".$LOGGING_MANAGER" = . && LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
+JAVA_OPTS="$JAVA_OPTS $LOGGING_MANAGER"
+
+# Set -pidfile
+test ".$CATALINA_PID" = . && CATALINA_PID="$CATALINA_BASE/logs/catalina-daemon.pid"
+
+# Increase the maximum file descriptors if we can
+if [ "$cygwin" = "false" ]; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ "$?" -eq 0 ]; then
+        # Darwin does not allow RLIMIT_INFINITY on file soft limit
+        if [ "$darwin" = "true" -a "$MAX_FD_LIMIT" = "unlimited" ]; then
+            MAX_FD_LIMIT=`/usr/sbin/sysctl -n kern.maxfilesperproc`
+        fi
+        test ".$MAX_FD" = ".maximum" && MAX_FD="$MAX_FD_LIMIT"
+        ulimit -n $MAX_FD
+        if [ "$?" -ne 0 ]; then
+            echo "$PROGRAM: Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        echo "$PROGRAM: Could not query system maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# ----- Execute The Requested Command -----------------------------------------
+case "$1" in
+    run     )
+      shift
+      "$JSVC" $* \
+      $JSVC_OPTS \
+      -java-home "$JAVA_HOME" \
+      -pidfile "$CATALINA_PID" \
+      -wait 10 \
+      -nodetach \
+      -outfile "&1" \
+      -errfile "&2" \
+      -classpath "$CLASSPATH" \
+      "$LOGGING_CONFIG" $JAVA_OPTS $CATALINA_OPTS \
+      -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" \
+      -Dcatalina.base="$CATALINA_BASE" \
+      -Dcatalina.home="$CATALINA_HOME" \
+      -Djava.io.tmpdir="$CATALINA_TMP" \
+      $CATALINA_MAIN
+      exit $?
+    ;;
+    start   )
+      "$JSVC" $JSVC_OPTS \
+      -java-home "$JAVA_HOME" \
+      -user $TOMCAT_USER \
+      -pidfile "$CATALINA_PID" \
+      -wait 10 \
+      -outfile "$CATALINA_OUT" \
+      -errfile "&1" \
+      -classpath "$CLASSPATH" \
+      "$LOGGING_CONFIG" $JAVA_OPTS $CATALINA_OPTS \
+      -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" \
+      -Dcatalina.base="$CATALINA_BASE" \
+      -Dcatalina.home="$CATALINA_HOME" \
+      -Djava.io.tmpdir="$CATALINA_TMP" \
+      $CATALINA_MAIN
+      exit $?
+    ;;
+    stop    )
+      "$JSVC" $JSVC_OPTS \
+      -stop \
+      -pidfile "$CATALINA_PID" \
+      -classpath "$CLASSPATH" \
+      -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" \
+      -Dcatalina.base="$CATALINA_BASE" \
+      -Dcatalina.home="$CATALINA_HOME" \
+      -Djava.io.tmpdir="$CATALINA_TMP" \
+      $CATALINA_MAIN
+      exit $?
+    ;;
+    version  )
+      "$JSVC" \
+      -java-home "$JAVA_HOME" \
+      -pidfile "$CATALINA_PID" \
+      -classpath "$CLASSPATH" \
+      -errfile "&2" \
+      -version \
+      -check \
+      $CATALINA_MAIN
+      if [ "$?" = 0 ]; then
+        "$JAVA_BIN" \
+        -classpath "$CATALINA_HOME/lib/catalina.jar" \
+        org.apache.catalina.util.ServerInfo
+      fi
+      exit $?
+    ;;
+    *       )
+      echo "Unknown command: \`$1'"
+      echo "Usage: $PROGRAM ( commands ... )"
+      echo "commands:"
+      echo "  run               Start Tomcat without detaching from console"
+      echo "  start             Start Tomcat"
+      echo "  stop              Stop Tomcat"
+      echo "  version           What version of commons daemon and Tomcat"
+      echo "                    are you running?"
+      exit 1
+    ;;
+esac
diff --git a/bin/digest.bat b/bin/digest.bat
new file mode 100644
index 0000000..41491dc
--- /dev/null
+++ b/bin/digest.bat
@@ -0,0 +1,59 @@
+@echo off

+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.

+

+if "%OS%" == "Windows_NT" setlocal

+rem ---------------------------------------------------------------------------

+rem Script to digest password using the algorithm specified

+rem

+rem $Id: digest.bat 1137559 2011-06-20 09:27:30Z rjung $

+rem ---------------------------------------------------------------------------

+

+rem Guess CATALINA_HOME if not defined

+set "CURRENT_DIR=%cd%"

+if not "%CATALINA_HOME%" == "" goto gotHome

+set "CATALINA_HOME=%CURRENT_DIR%"

+if exist "%CATALINA_HOME%\bin\tool-wrapper.bat" goto okHome

+cd ..

+set "CATALINA_HOME=%cd%"

+cd "%CURRENT_DIR%"

+:gotHome

+if exist "%CATALINA_HOME%\bin\tool-wrapper.bat" goto okHome

+echo The CATALINA_HOME environment variable is not defined correctly

+echo This environment variable is needed to run this program

+goto end

+:okHome

+

+set "EXECUTABLE=%CATALINA_HOME%\bin\tool-wrapper.bat"

+

+rem Check that target executable exists

+if exist "%EXECUTABLE%" goto okExec

+echo Cannot find "%EXECUTABLE%"

+echo This file is needed to run this program

+goto end

+:okExec

+

+rem Get remaining unshifted command line arguments and save them in the

+set CMD_LINE_ARGS=

+:setArgs

+if ""%1""=="""" goto doneSetArgs

+set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1

+shift

+goto setArgs

+:doneSetArgs

+

+call "%EXECUTABLE%" -server org.apache.catalina.realm.RealmBase %CMD_LINE_ARGS%

+

+:end

diff --git a/bin/digest.sh b/bin/digest.sh
new file mode 100755
index 0000000..7aa0c40
--- /dev/null
+++ b/bin/digest.sh
@@ -0,0 +1,62 @@
+#!/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.
+
+# -----------------------------------------------------------------------------
+# Script to digest password using the algorithm specified
+#
+# $Id: digest.sh 1202062 2011-11-15 06:50:02Z mturk $
+# -----------------------------------------------------------------------------
+
+# Better OS/400 detection: see Bugzilla 31132
+os400=false
+case "`uname`" in
+OS400*) os400=true;;
+esac
+
+# resolve links - $0 may be a softlink
+PRG="$0"
+
+while [ -h "$PRG" ] ; do
+  ls=`ls -ld "$PRG"`
+  link=`expr "$ls" : '.*-> \(.*\)$'`
+  if expr "$link" : '/.*' > /dev/null; then
+    PRG="$link"
+  else
+    PRG=`dirname "$PRG"`/"$link"
+  fi
+done
+
+PRGDIR=`dirname "$PRG"`
+EXECUTABLE=tool-wrapper.sh
+
+# Check that target executable exists
+if $os400; then
+  # -x will Only work on the os400 if the files are:
+  # 1. owned by the user
+  # 2. owned by the PRIMARY group of the user
+  # this will not work if the user belongs in secondary groups
+  eval
+else
+  if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
+    echo "Cannot find $PRGDIR/$EXECUTABLE"
+    echo "The file is absent or does not have execute permission"
+    echo "This file is needed to run this program"
+    exit 1
+  fi
+fi
+
+exec "$PRGDIR"/"$EXECUTABLE" -server org.apache.catalina.realm.RealmBase "$@"
diff --git a/bin/setclasspath.bat b/bin/setclasspath.bat
new file mode 100644
index 0000000..e29b41a
--- /dev/null
+++ b/bin/setclasspath.bat
@@ -0,0 +1,88 @@
+@echo off

+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 ---------------------------------------------------------------------------

+rem Set JAVA_HOME or JRE_HOME if not already set, ensure any provided settings

+rem are valid and consistent with the selected start-up options and set up the

+rem endorsed directory.

+rem

+rem $Id: setclasspath.bat 1202062 2011-11-15 06:50:02Z mturk $

+rem ---------------------------------------------------------------------------

+

+rem Make sure prerequisite environment variables are set

+

+rem In debug mode we need a real JDK (JAVA_HOME)

+if ""%1"" == ""debug"" goto needJavaHome

+

+rem Otherwise either JRE or JDK are fine

+if not "%JRE_HOME%" == "" goto gotJreHome

+if not "%JAVA_HOME%" == "" goto gotJavaHome

+echo Neither the JAVA_HOME nor the JRE_HOME environment variable is defined

+echo At least one of these environment variable is needed to run this program

+goto exit

+

+:needJavaHome

+rem Check if we have a usable JDK

+if "%JAVA_HOME%" == "" goto noJavaHome

+if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome

+if not exist "%JAVA_HOME%\bin\javaw.exe" goto noJavaHome

+if not exist "%JAVA_HOME%\bin\jdb.exe" goto noJavaHome

+if not exist "%JAVA_HOME%\bin\javac.exe" goto noJavaHome

+set "JRE_HOME=%JAVA_HOME%"

+goto okJava

+

+:noJavaHome

+echo The JAVA_HOME environment variable is not defined correctly.

+echo It is needed to run this program in debug mode.

+echo NB: JAVA_HOME should point to a JDK not a JRE.

+goto exit

+

+:gotJavaHome

+rem No JRE given, use JAVA_HOME as JRE_HOME

+set "JRE_HOME=%JAVA_HOME%"

+

+:gotJreHome

+rem Check if we have a usable JRE

+if not exist "%JRE_HOME%\bin\java.exe" goto noJreHome

+if not exist "%JRE_HOME%\bin\javaw.exe" goto noJreHome

+goto okJava

+

+:noJreHome

+rem Needed at least a JRE

+echo The JRE_HOME environment variable is not defined correctly

+echo This environment variable is needed to run this program

+goto exit

+

+:okJava

+rem Don't override the endorsed dir if the user has set it previously

+if not "%JAVA_ENDORSED_DIRS%" == "" goto gotEndorseddir

+rem Set the default -Djava.endorsed.dirs argument

+set "JAVA_ENDORSED_DIRS=%CATALINA_HOME%\endorsed"

+:gotEndorseddir

+

+rem Set standard command for invoking Java.

+rem Note that NT requires a window name argument when using start.

+rem Also note the quoting as JAVA_HOME may contain spaces.

+set _RUNJAVA="%JRE_HOME%\bin\java"

+set _RUNJDB="%JAVA_HOME%\bin\jdb"

+

+goto end

+

+:exit

+exit /b 1

+

+:end

+exit /b 0

diff --git a/bin/setclasspath.sh b/bin/setclasspath.sh
new file mode 100755
index 0000000..b6c42dd
--- /dev/null
+++ b/bin/setclasspath.sh
@@ -0,0 +1,92 @@
+#!/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.
+
+# -----------------------------------------------------------------------------
+#  Set JAVA_HOME or JRE_HOME if not already set, ensure any provided settings
+#  are valid and consistent with the selected start-up options and set up the
+#  endorsed directory.
+#
+#  $Id: setclasspath.sh 1430568 2013-01-08 22:08:57Z schultz $
+# -----------------------------------------------------------------------------
+
+# Make sure prerequisite environment variables are set
+if [ -z "$JAVA_HOME" -a -z "$JRE_HOME" ]; then
+  if $darwin; then
+    # Bugzilla 54390
+    if [ -x '/usr/libexec/java_home' ] ; then
+      export JAVA_HOME=`/usr/libexec/java_home`
+    # Bugzilla 37284 (reviewed).
+    elif [ -d "/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home" ]; then
+      export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home"
+    fi
+  else
+    JAVA_PATH=`which java 2>/dev/null`
+    if [ "x$JAVA_PATH" != "x" ]; then
+      JAVA_PATH=`dirname $JAVA_PATH 2>/dev/null`
+      JRE_HOME=`dirname $JAVA_PATH 2>/dev/null`
+    fi
+    if [ "x$JRE_HOME" = "x" ]; then
+      # XXX: Should we try other locations?
+      if [ -x /usr/bin/java ]; then
+        JRE_HOME=/usr
+      fi
+    fi
+  fi
+  if [ -z "$JAVA_HOME" -a -z "$JRE_HOME" ]; then
+    echo "Neither the JAVA_HOME nor the JRE_HOME environment variable is defined"
+    echo "At least one of these environment variable is needed to run this program"
+    exit 1
+  fi
+fi
+if [ -z "$JAVA_HOME" -a "$1" = "debug" ]; then
+  echo "JAVA_HOME should point to a JDK in order to run in debug mode."
+  exit 1
+fi
+if [ -z "$JRE_HOME" ]; then
+  JRE_HOME="$JAVA_HOME"
+fi
+
+# If we're running under jdb, we need a full jdk.
+if [ "$1" = "debug" ] ; then
+  if [ "$os400" = "true" ]; then
+    if [ ! -x "$JAVA_HOME"/bin/java -o ! -x "$JAVA_HOME"/bin/javac ]; then
+      echo "The JAVA_HOME environment variable is not defined correctly"
+      echo "This environment variable is needed to run this program"
+      echo "NB: JAVA_HOME should point to a JDK not a JRE"
+      exit 1
+    fi
+  else
+    if [ ! -x "$JAVA_HOME"/bin/java -o ! -x "$JAVA_HOME"/bin/jdb -o ! -x "$JAVA_HOME"/bin/javac ]; then
+      echo "The JAVA_HOME environment variable is not defined correctly"
+      echo "This environment variable is needed to run this program"
+      echo "NB: JAVA_HOME should point to a JDK not a JRE"
+      exit 1
+    fi
+  fi
+fi
+
+# Don't override the endorsed dir if the user has set it previously
+if [ -z "$JAVA_ENDORSED_DIRS" ]; then
+  # Set the default -Djava.endorsed.dirs argument
+  JAVA_ENDORSED_DIRS="$CATALINA_HOME"/endorsed
+fi
+
+# Set standard commands for invoking Java.
+_RUNJAVA="$JRE_HOME"/bin/java
+if [ "$os400" != "true" ]; then
+  _RUNJDB="$JAVA_HOME"/bin/jdb
+fi
diff --git a/bin/shutdown.bat b/bin/shutdown.bat
new file mode 100644
index 0000000..0f30951
--- /dev/null
+++ b/bin/shutdown.bat
@@ -0,0 +1,59 @@
+@echo off

+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.

+

+if "%OS%" == "Windows_NT" setlocal

+rem ---------------------------------------------------------------------------

+rem Stop script for the CATALINA Server

+rem

+rem $Id: shutdown.bat 895392 2010-01-03 14:02:31Z kkolinko $

+rem ---------------------------------------------------------------------------

+

+rem Guess CATALINA_HOME if not defined

+set "CURRENT_DIR=%cd%"

+if not "%CATALINA_HOME%" == "" goto gotHome

+set "CATALINA_HOME=%CURRENT_DIR%"

+if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome

+cd ..

+set "CATALINA_HOME=%cd%"

+cd "%CURRENT_DIR%"

+:gotHome

+if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome

+echo The CATALINA_HOME environment variable is not defined correctly

+echo This environment variable is needed to run this program

+goto end

+:okHome

+

+set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"

+

+rem Check that target executable exists

+if exist "%EXECUTABLE%" goto okExec

+echo Cannot find "%EXECUTABLE%"

+echo This file is needed to run this program

+goto end

+:okExec

+

+rem Get remaining unshifted command line arguments and save them in the

+set CMD_LINE_ARGS=

+:setArgs

+if ""%1""=="""" goto doneSetArgs

+set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1

+shift

+goto setArgs

+:doneSetArgs

+

+call "%EXECUTABLE%" stop %CMD_LINE_ARGS%

+

+:end

diff --git a/bin/shutdown.sh b/bin/shutdown.sh
new file mode 100755
index 0000000..ca243f6
--- /dev/null
+++ b/bin/shutdown.sh
@@ -0,0 +1,62 @@
+#!/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.
+
+# -----------------------------------------------------------------------------
+# Stop script for the CATALINA Server
+#
+# $Id: shutdown.sh 1202062 2011-11-15 06:50:02Z mturk $
+# -----------------------------------------------------------------------------
+
+# Better OS/400 detection: see Bugzilla 31132
+os400=false
+case "`uname`" in
+OS400*) os400=true;;
+esac
+
+# resolve links - $0 may be a softlink
+PRG="$0"
+
+while [ -h "$PRG" ] ; do
+  ls=`ls -ld "$PRG"`
+  link=`expr "$ls" : '.*-> \(.*\)$'`
+  if expr "$link" : '/.*' > /dev/null; then
+    PRG="$link"
+  else
+    PRG=`dirname "$PRG"`/"$link"
+  fi
+done
+
+PRGDIR=`dirname "$PRG"`
+EXECUTABLE=catalina.sh
+
+# Check that target executable exists
+if $os400; then
+  # -x will Only work on the os400 if the files are:
+  # 1. owned by the user
+  # 2. owned by the PRIMARY group of the user
+  # this will not work if the user belongs in secondary groups
+  eval
+else
+  if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
+    echo "Cannot find $PRGDIR/$EXECUTABLE"
+    echo "The file is absent or does not have execute permission"
+    echo "This file is needed to run this program"
+    exit 1
+  fi
+fi
+
+exec "$PRGDIR"/"$EXECUTABLE" stop "$@"
diff --git a/bin/startup.bat b/bin/startup.bat
new file mode 100644
index 0000000..d9ce1ac
--- /dev/null
+++ b/bin/startup.bat
@@ -0,0 +1,59 @@
+@echo off

+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.

+

+if "%OS%" == "Windows_NT" setlocal

+rem ---------------------------------------------------------------------------

+rem Start script for the CATALINA Server

+rem

+rem $Id: startup.bat 895392 2010-01-03 14:02:31Z kkolinko $

+rem ---------------------------------------------------------------------------

+

+rem Guess CATALINA_HOME if not defined

+set "CURRENT_DIR=%cd%"

+if not "%CATALINA_HOME%" == "" goto gotHome

+set "CATALINA_HOME=%CURRENT_DIR%"

+if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome

+cd ..

+set "CATALINA_HOME=%cd%"

+cd "%CURRENT_DIR%"

+:gotHome

+if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome

+echo The CATALINA_HOME environment variable is not defined correctly

+echo This environment variable is needed to run this program

+goto end

+:okHome

+

+set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"

+

+rem Check that target executable exists

+if exist "%EXECUTABLE%" goto okExec

+echo Cannot find "%EXECUTABLE%"

+echo This file is needed to run this program

+goto end

+:okExec

+

+rem Get remaining unshifted command line arguments and save them in the

+set CMD_LINE_ARGS=

+:setArgs

+if ""%1""=="""" goto doneSetArgs

+set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1

+shift

+goto setArgs

+:doneSetArgs

+

+call "%EXECUTABLE%" start %CMD_LINE_ARGS%

+

+:end

diff --git a/bin/startup.sh b/bin/startup.sh
new file mode 100755
index 0000000..3fd902d
--- /dev/null
+++ b/bin/startup.sh
@@ -0,0 +1,62 @@
+#!/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.
+
+# -----------------------------------------------------------------------------
+# Start Script for the CATALINA Server
+#
+# $Id: startup.sh 1202062 2011-11-15 06:50:02Z mturk $
+# -----------------------------------------------------------------------------
+
+# Better OS/400 detection: see Bugzilla 31132
+os400=false
+case "`uname`" in
+OS400*) os400=true;;
+esac
+
+# resolve links - $0 may be a softlink
+PRG="$0"
+
+while [ -h "$PRG" ] ; do
+  ls=`ls -ld "$PRG"`
+  link=`expr "$ls" : '.*-> \(.*\)$'`
+  if expr "$link" : '/.*' > /dev/null; then
+    PRG="$link"
+  else
+    PRG=`dirname "$PRG"`/"$link"
+  fi
+done
+
+PRGDIR=`dirname "$PRG"`
+EXECUTABLE=catalina.sh
+
+# Check that target executable exists
+if $os400; then
+  # -x will Only work on the os400 if the files are:
+  # 1. owned by the user
+  # 2. owned by the PRIMARY group of the user
+  # this will not work if the user belongs in secondary groups
+  eval
+else
+  if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
+    echo "Cannot find $PRGDIR/$EXECUTABLE"
+    echo "The file is absent or does not have execute permission"
+    echo "This file is needed to run this program"
+    exit 1
+  fi
+fi
+
+exec "$PRGDIR"/"$EXECUTABLE" start "$@"
diff --git a/bin/tomcat-juli.jar b/bin/tomcat-juli.jar
new file mode 100644
index 0000000..3a6755b
--- /dev/null
+++ b/bin/tomcat-juli.jar
Binary files differ
diff --git a/bin/tomcat-native.tar.gz b/bin/tomcat-native.tar.gz
new file mode 100644
index 0000000..a764da7
--- /dev/null
+++ b/bin/tomcat-native.tar.gz
Binary files differ
diff --git a/bin/tool-wrapper.bat b/bin/tool-wrapper.bat
new file mode 100644
index 0000000..0d4dae6
--- /dev/null
+++ b/bin/tool-wrapper.bat
@@ -0,0 +1,97 @@
+@echo off

+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.

+

+if "%OS%" == "Windows_NT" setlocal

+rem ---------------------------------------------------------------------------

+rem Wrapper script for command line tools

+rem

+rem Environment Variable Prerequisites

+rem

+rem   CATALINA_HOME   May point at your Catalina "build" directory.

+rem

+rem   TOOL_OPTS       (Optional) Java runtime options.

+rem

+rem   JAVA_HOME       Must point at your Java Development Kit installation.

+rem                   Using JRE_HOME instead works as well.

+rem

+rem   JRE_HOME        Must point at your Java Runtime installation.

+rem                   Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME

+rem                   are both set, JRE_HOME is used.

+rem

+rem   JAVA_OPTS       (Optional) Java runtime options.

+rem

+rem   JAVA_ENDORSED_DIRS (Optional) Lists of of semi-colon separated directories

+rem                   containing some jars in order to allow replacement of APIs

+rem                   created outside of the JCP (i.e. DOM and SAX from W3C).

+rem                   It can also be used to update the XML parser implementation.

+rem                   Defaults to $CATALINA_HOME/endorsed.

+rem

+rem $Id: tool-wrapper.bat 1138835 2011-06-23 11:27:57Z rjung $

+rem ---------------------------------------------------------------------------

+

+rem Guess CATALINA_HOME if not defined

+set "CURRENT_DIR=%cd%"

+if not "%CATALINA_HOME%" == "" goto gotHome

+set "CATALINA_HOME=%CURRENT_DIR%"

+if exist "%CATALINA_HOME%\bin\tool-wrapper.bat" goto okHome

+cd ..

+set "CATALINA_HOME=%cd%"

+cd "%CURRENT_DIR%"

+:gotHome

+if exist "%CATALINA_HOME%\bin\tool-wrapper.bat" goto okHome

+echo The CATALINA_HOME environment variable is not defined correctly

+echo This environment variable is needed to run this program

+goto end

+:okHome

+

+rem Ensure that any user defined CLASSPATH variables are not used on startup,

+rem but allow them to be specified in setenv.bat, in rare case when it is needed.

+set CLASSPATH=

+

+rem Get standard environment variables

+if exist "%CATALINA_HOME%\bin\setenv.bat" call "%CATALINA_HOME%\bin\setenv.bat"

+

+rem Get standard Java environment variables

+if exist "%CATALINA_HOME%\bin\setclasspath.bat" goto okSetclasspath

+echo Cannot find "%CATALINA_HOME%\bin\setclasspath.bat"

+echo This file is needed to run this program

+goto end

+:okSetclasspath

+call "%CATALINA_HOME%\bin\setclasspath.bat" %1

+if errorlevel 1 goto end

+

+rem Add on extra jar files to CLASSPATH

+rem Note that there are no quotes as we do not want to introduce random

+rem quotes into the CLASSPATH

+if "%CLASSPATH%" == "" goto emptyClasspath

+set "CLASSPATH=%CLASSPATH%;"

+:emptyClasspath

+set "CLASSPATH=%CLASSPATH%%CATALINA_HOME%\bin\bootstrap.jar;%CATALINA_HOME%\bin\tomcat-juli.jar;%CATALINA_HOME%\lib\servlet-api.jar"

+

+set JAVA_OPTS=%JAVA_OPTS% -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager

+

+rem Get remaining unshifted command line arguments and save them in the

+set CMD_LINE_ARGS=

+:setArgs

+if ""%1""=="""" goto doneSetArgs

+set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1

+shift

+goto setArgs

+:doneSetArgs

+

+%_RUNJAVA% %JAVA_OPTS% %TOOL_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.home="%CATALINA_HOME%" org.apache.catalina.startup.Tool %CMD_LINE_ARGS%

+

+:end

diff --git a/bin/tool-wrapper.sh b/bin/tool-wrapper.sh
new file mode 100755
index 0000000..8979209
--- /dev/null
+++ b/bin/tool-wrapper.sh
@@ -0,0 +1,141 @@
+#!/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.
+
+# -----------------------------------------------------------------------------
+# Wrapper script for command line tools
+#
+# Environment Variable Prerequisites
+#
+#   CATALINA_HOME   May point at your Catalina "build" directory.
+#
+#   TOOL_OPTS       (Optional) Java runtime options.
+#
+#   JAVA_HOME       Must point at your Java Development Kit installation.
+#                   Using JRE_HOME instead works as well.
+#
+#   JRE_HOME        Must point at your Java Runtime installation.
+#                   Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME
+#                   are both set, JRE_HOME is used.
+#
+#   JAVA_OPTS       (Optional) Java runtime options.
+#
+#   JAVA_ENDORSED_DIRS (Optional) Lists of of colon separated directories
+#                   containing some jars in order to allow replacement of APIs
+#                   created outside of the JCP (i.e. DOM and SAX from W3C).
+#                   It can also be used to update the XML parser implementation.
+#                   Defaults to $CATALINA_HOME/endorsed.
+#
+# $Id: tool-wrapper.sh 1138835 2011-06-23 11:27:57Z rjung $
+# -----------------------------------------------------------------------------
+
+# OS specific support.  $var _must_ be set to either true or false.
+cygwin=false
+darwin=false
+os400=false
+case "`uname`" in
+CYGWIN*) cygwin=true;;
+Darwin*) darwin=true;;
+OS400*) os400=true;;
+esac
+
+# resolve links - $0 may be a softlink
+PRG="$0"
+
+while [ -h "$PRG" ]; do
+  ls=`ls -ld "$PRG"`
+  link=`expr "$ls" : '.*-> \(.*\)$'`
+  if expr "$link" : '/.*' > /dev/null; then
+    PRG="$link"
+  else
+    PRG=`dirname "$PRG"`/"$link"
+  fi
+done
+
+# Get standard environment variables
+PRGDIR=`dirname "$PRG"`
+
+# Only set CATALINA_HOME if not already set
+[ -z "$CATALINA_HOME" ] && CATALINA_HOME=`cd "$PRGDIR/.." >/dev/null; pwd`
+
+# Ensure that any user defined CLASSPATH variables are not used on startup,
+# but allow them to be specified in setenv.sh, in rare case when it is needed.
+CLASSPATH=
+
+if [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
+  . "$CATALINA_HOME/bin/setenv.sh"
+fi
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched
+if $cygwin; then
+  [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+  [ -n "$JRE_HOME" ] && JRE_HOME=`cygpath --unix "$JRE_HOME"`
+  [ -n "$CATALINA_HOME" ] && CATALINA_HOME=`cygpath --unix "$CATALINA_HOME"`
+  [ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
+fi
+
+# For OS400
+if $os400; then
+  # Set job priority to standard for interactive (interactive - 6) by using
+  # the interactive priority - 6, the helper threads that respond to requests
+  # will be running at the same priority as interactive jobs.
+  COMMAND='chgjob job('$JOBNAME') runpty(6)'
+  system $COMMAND
+
+  # Enable multi threading
+  export QIBM_MULTI_THREADED=Y
+fi
+
+# Get standard Java environment variables
+if $os400; then
+  # -r will Only work on the os400 if the files are:
+  # 1. owned by the user
+  # 2. owned by the PRIMARY group of the user
+  # this will not work if the user belongs in secondary groups
+  . "$CATALINA_HOME"/bin/setclasspath.sh
+else
+  if [ -r "$CATALINA_HOME"/bin/setclasspath.sh ]; then
+    . "$CATALINA_HOME"/bin/setclasspath.sh
+  else
+    echo "Cannot find $CATALINA_HOME/bin/setclasspath.sh"
+    echo "This file is needed to run this program"
+    exit 1
+  fi
+fi
+
+# Add on extra jar files to CLASSPATH
+if [ ! -z "$CLASSPATH" ] ; then
+  CLASSPATH="$CLASSPATH":
+fi
+CLASSPATH="$CLASSPATH""$CATALINA_HOME"/bin/bootstrap.jar:"$CATALINA_HOME"/bin/tomcat-juli.jar:"$CATALINA_HOME"/lib/servlet-api.jar
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin; then
+  JAVA_HOME=`cygpath --absolute --windows "$JAVA_HOME"`
+  JRE_HOME=`cygpath --absolute --windows "$JRE_HOME"`
+  CATALINA_HOME=`cygpath --absolute --windows "$CATALINA_HOME"`
+  CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
+  JAVA_ENDORSED_DIRS=`cygpath --path --windows "$JAVA_ENDORSED_DIRS"`
+fi
+
+JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
+
+# ----- Execute The Requested Command -----------------------------------------
+
+exec "$_RUNJAVA" $JAVA_OPTS $TOOL_OPTS \
+  -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
+  -Dcatalina.home="$CATALINA_HOME" \
+  org.apache.catalina.startup.Tool "$@"
diff --git a/bin/version.bat b/bin/version.bat
new file mode 100644
index 0000000..3a67165
--- /dev/null
+++ b/bin/version.bat
@@ -0,0 +1,59 @@
+@echo off

+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.

+

+if "%OS%" == "Windows_NT" setlocal

+rem ---------------------------------------------------------------------------

+rem Version script for the CATALINA Server

+rem

+rem $Id: version.bat 895392 2010-01-03 14:02:31Z kkolinko $

+rem ---------------------------------------------------------------------------

+

+rem Guess CATALINA_HOME if not defined

+set "CURRENT_DIR=%cd%"

+if not "%CATALINA_HOME%" == "" goto gotHome

+set "CATALINA_HOME=%CURRENT_DIR%"

+if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome

+cd ..

+set "CATALINA_HOME=%cd%"

+cd "%CURRENT_DIR%"

+:gotHome

+if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome

+echo The CATALINA_HOME environment variable is not defined correctly

+echo This environment variable is needed to run this program

+goto end

+:okHome

+

+set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"

+

+rem Check that target executable exists

+if exist "%EXECUTABLE%" goto okExec

+echo Cannot find "%EXECUTABLE%"

+echo This file is needed to run this program

+goto end

+:okExec

+

+rem Get remaining unshifted command line arguments and save them in the

+set CMD_LINE_ARGS=

+:setArgs

+if ""%1""=="""" goto doneSetArgs

+set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1

+shift

+goto setArgs

+:doneSetArgs

+

+call "%EXECUTABLE%" version %CMD_LINE_ARGS%

+

+:end

diff --git a/bin/version.sh b/bin/version.sh
new file mode 100755
index 0000000..c664f75
--- /dev/null
+++ b/bin/version.sh
@@ -0,0 +1,62 @@
+#!/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.
+
+# -----------------------------------------------------------------------------
+# Version Script for the CATALINA Server
+#
+# $Id: version.sh 1202062 2011-11-15 06:50:02Z mturk $
+# -----------------------------------------------------------------------------
+
+# Better OS/400 detection: see Bugzilla 31132
+os400=false
+case "`uname`" in
+OS400*) os400=true;;
+esac
+
+# resolve links - $0 may be a softlink
+PRG="$0"
+
+while [ -h "$PRG" ] ; do
+  ls=`ls -ld "$PRG"`
+  link=`expr "$ls" : '.*-> \(.*\)$'`
+  if expr "$link" : '/.*' > /dev/null; then
+    PRG="$link"
+  else
+    PRG=`dirname "$PRG"`/"$link"
+  fi
+done
+
+PRGDIR=`dirname "$PRG"`
+EXECUTABLE=catalina.sh
+
+# Check that target executable exists
+if $os400; then
+  # -x will Only work on the os400 if the files are:
+  # 1. owned by the user
+  # 2. owned by the PRIMARY group of the user
+  # this will not work if the user belongs in secondary groups
+  eval
+else
+  if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
+    echo "Cannot find $PRGDIR/$EXECUTABLE"
+    echo "The file is absent or does not have execute permission"
+    echo "This file is needed to run this program"
+    exit 1
+  fi
+fi
+
+exec "$PRGDIR"/"$EXECUTABLE" version "$@"