<?xml version="1.0" encoding="UTF-8"?>
<!--
  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.
-->
<!DOCTYPE document [
  <!ENTITY project SYSTEM "project.xml">
]>
<document url="windows-service-howto.html">

    &project;

    <properties>
      <author email="mturk@apache.org">Mladen Turk</author>
      <title>Windows Service How-To</title>
    </properties>

<body>

<section name="Table of Contents">
<toc/>
</section>

<section name="Tomcat service application">
<p>
    <b>Tomcat<version-major/></b> is a service application for running Tomcat
    <version-major/> as a Windows service.
</p>
</section>
<section name="Tomcat monitor application">
<p>
    <b>Tomcat<version-major/>w</b> is a GUI application for monitoring and
    configuring Tomcat services.
</p>
    <p>The available command line options are:</p>

    <table class="defaultTable">
    <tr><td><b>//ES//</b></td>
        <td>Edit service configuration</td>
        <td>This is the default operation. It is called if the no option is
            provided but the executable is renamed to <b>servicenameW.exe</b></td>
    </tr>
    <tr><td><b>//MS//</b></td>
        <td>Monitor service</td>
        <td>Put the icon in the system tray</td>
    </tr>
    </table>

</section>
<section name="Command line arguments">
<p>
    Each command line directive is in the form of <b>//XX//ServiceName</b>
</p>
    <p>The available command line options are:</p>

    <table class="defaultTable">
    <tr><td><b>//TS//</b></td>
        <td>Run the service as console application</td>
        <td>This is the default operation. It is called if the no option is
            provided. The ServiceName is the name of the executable without
            exe suffix, meaning Tomcat<version-major/></td>
    </tr>
    <tr><td><b>//RS//</b></td>
        <td>Run the service</td>
        <td>Called only from ServiceManager</td>
    </tr>
    <tr><td><b>//SS//</b></td>
        <td>Stop the service</td>
        <td></td>
    </tr>
    <tr><td><b>//US//</b></td>
        <td>Update service parameters</td>
        <td></td>
    </tr>
    <tr><td><b>//IS//</b></td>
        <td>Install service</td>
        <td></td>
    </tr>
    <tr><td><b>//DS//</b></td>
        <td>Delete service</td>
        <td>Stops the service if running</td>
    </tr>
    </table>

</section>
<section name="Command line parameters">
<p>
    Each command line parameter is prefixed with <b>--</b>. If the command line
    parameter is prefixed with <b>++</b> then it's value will be appended to the
    existing option.
    If the environment variable with the same name as command line parameter but
    prefixed with <code>PR_</code> exists it will take precedence.
    For example:</p>
<source>set PR_CLASSPATH=xx.jar</source>

<p>is equivalent to providing</p>
<source>--Classpath=xx.jar</source>
<p> as command line parameter.</p>

    <table class="defaultTable">
    <tr>
    <th>ParameterName</th>
    <th>Default</th>
    <th>Description</th>
    </tr>
    <tr>
    <td>--Description</td>
    <td></td>
    <td>Service name description (maximum 1024 characters)</td>
    </tr>
    <tr>
    <td>--DisplayName</td>
    <td>ServiceName</td>
    <td>Service display name</td>
    </tr>
    <tr>
    <td>--Install</td>
    <td>procrun.exe //RS//ServiceName</td>
    <td>Install image</td>
    </tr>
    <tr>
    <td>--Startup</td>
    <td>manual</td>
    <td>Service startup mode can be either <b>auto</b> or <b>manual</b></td>
    </tr>
    <tr>
    <td>--DependsOn</td>
    <td></td>
    <td>List of services that this service depend on. Dependent services
        are separated using either <b>#</b> or <b>;</b> characters</td>
    </tr>
    <tr>
    <td>--Environment</td>
    <td></td>
    <td>List of environment variables that will be provided to the service
        in the form <b>key=value</b>. They are separated using either
        <b>#</b> or <b>;</b> characters. If you need to use either the <b>#</b>
        or <b>;</b> character within a value then the entire value must be
        enclosed inside single quotes.</td>
    </tr>
    <tr>
    <td>--User</td>
    <td></td>
    <td>User account used for running executable. It is used only for
        StartMode <b>java</b> or <b>exe</b> and enables running applications
        as service under account without LogonAsService privilege.</td>
    </tr>
    <tr>
    <td>--Password</td>
    <td></td>
    <td>Password for user account set by --User parameter</td>
    </tr>
    <tr>
    <td>--JavaHome</td>
    <td>JAVA_HOME</td>
    <td>Set a different JAVA_HOME than defined by JAVA_HOME environment
        variable</td>
    </tr>
    <tr>
    <td>--Jvm</td>
    <td>auto</td>
    <td>Use either <b>auto</b> (i.e. find the JVM from the Windows registry)
        or specify the full path to the <b>jvm.dll</b>.
        You can use the environment variable expansion here.</td>
    </tr>
    <tr>
    <td>--JvmOptions</td>
    <td>-Xrs</td>
    <td>List of options in the form of <b>-D</b> or <b>-X</b> that will be
        passed to the JVM. The options are separated using either
        <b>#</b> or <b>;</b> characters. If you need to embed either <b>#</b> or
        <b>;</b> characters, put them inside single quotes. (Not used in
        <b>exe</b> mode.)</td>
    </tr>
    <tr>
    <td>--JvmOptions9</td>
    <td></td>
    <td>List of options in the form of <b>-D</b> or <b>-X</b> that will be
        passed to the JVM when running on Java 9 or later. The options are
        separated using either <b>#</b> or <b>;</b> characters. If you need to
        embed either <b>#</b> or <b>;</b> characters, put them inside single
        quotes. (Not used in <b>exe</b> mode.)</td>
    </tr>
    <tr>
    <td>--Classpath</td>
    <td></td>
    <td>Set the Java classpath. (Not used in <b>exe</b> mode.)</td>
    </tr>
    <tr>
    <td>--JvmMs</td>
    <td></td>
    <td>Initial memory pool size in MB. (Not used in <b>exe</b> mode.)</td>
    </tr>
    <tr>
    <td>--JvmMx</td>
    <td></td>
    <td>Maximum memory pool size in MB. (Not used in <b>exe</b> mode.)</td>
    </tr>
    <tr>
    <td>--JvmSs</td>
    <td></td>
    <td>Thread stack size in KB. (Not used in <b>exe</b> mode.)</td>
    </tr>
    <tr>
    <td>--StartMode</td>
    <td></td>
    <td>One of <b>jvm</b>, <b>Java</b> or <b>exe</b>. The modes are:
      <ul>
        <li>jvm - start Java in-process. Depends on jvm.dll, see <b>--Jvm</b>.</li>
        <li>Java - same as exe, but automatically uses the default Java
         executable, i.e. %JAVA_HOME%\bin\java.exe. Make sure JAVA_HOME is set
         correctly, or use --JavaHome to provide the correct location.
         If neither is set, procrun will try to find the default JDK (not JRE)
         from the Windows registry.</li>
        <li>exe - run the image as a separate process</li>
      </ul>
    </td>
    </tr>
    <tr>
    <td>--StartImage</td>
    <td></td>
    <td>Executable that will be run. Only applies to <b>exe</b> mode.</td>
    </tr>
    <tr>
    <td>--StartPath</td>
    <td></td>
    <td>Working path for the start image executable.</td>
    </tr>
    <tr>
    <td>--StartClass</td>
    <td>Main</td>
    <td>Class that contains the startup method. Applies to the <b>jvm</b> and
        <b>Java</b> modes. (Not used in <b>exe</b> mode.) </td>
    </tr>
    <tr>
    <td>--StartMethod</td>
    <td>main</td>
    <td>Method name if differs then main</td>
    </tr>
    <tr>
    <td>--StartParams</td>
    <td></td>
    <td>List of parameters that will be passed to either StartImage or
        StartClass. Parameters are separated using either <b>#</b> or
        <b>;</b> character.</td>
    </tr>
    <tr>
    <td>--StopMode</td>
    <td></td>
    <td>One of <b>jvm</b>, <b>Java</b> or <b>exe</b>. See <b>--StartMode</b>
        for further details. </td>
    </tr>
    <tr>
    <td>--StopImage</td>
    <td></td>
    <td>Executable that will be run on Stop service signal. Only applies to
        <b>exe</b> mode.</td>
    </tr>
    <tr>
    <td>--StopPath</td>
    <td></td>
    <td>Working path for the stop image executable. Does not apply to <b>jvm</b>
        mode.</td>
    </tr>
    <tr>
    <td>--StopClass</td>
    <td>Main</td>
    <td>Class that will be used on Stop service signal. Applies to the
        <b>jvm</b> and <b>Java</b> modes. </td>
    </tr>
    <tr>
    <td>--StopMethod</td>
    <td>main</td>
    <td>Method name if differs then main</td>
    </tr>
    <tr>
    <td>--StopParams</td>
    <td></td>
    <td>List of parameters that will be passed to either StopImage or
        StopClass. Parameters are separated using either <b>#</b> or
        <b>;</b> character.</td>
    </tr>
    <tr>
    <td>--StopTimeout</td>
    <td>No Timeout</td>
    <td>Defines the timeout in seconds that procrun waits for service to
        exit gracefully.</td>
    </tr>
    <tr>
    <td>--LogPath</td>
    <td>%SystemRoot%\System32\LogFiles\Apache</td>
    <td>Defines the path for logging. Creates the directory if necessary.</td>
    </tr>
    <tr>
    <td>--LogPrefix</td>
    <td>commons-daemon</td>
    <td>Defines the service log filename prefix. The log file is created in the
        LogPath directory with <code>.YEAR-MONTH-DAY.log</code> suffix</td>
    </tr>
    <tr>
    <td>--LogLevel</td>
    <td>Info</td>
    <td>Defines the logging level and can be either <b>Error</b>,
        <b>Info</b>, <b>Warn</b> or <b>Debug</b>. (Case insensitive).</td>
    </tr>
    <tr>
    <td>--StdOutput</td>
    <td></td>
    <td>Redirected stdout filename.
        If named <b>auto</b> then file is created inside <b>LogPath</b> with the
        name <b>service-stdout.YEAR-MONTH-DAY.log</b>.</td>
    </tr>
    <tr>
    <td>--StdError</td>
    <td></td>
    <td>Redirected stderr filename.
        If named <b>auto</b> then file is created inside <b>LogPath</b> with the
        name <b>service-stderr.YEAR-MONTH-DAY.log</b>.</td>
    </tr>
    <tr>
    <td>--PidFile</td>
    <td></td>
    <td>Defines the file name for storing the running process id. Actual file is
        created in the <b>LogPath</b> directory</td>
    </tr>
    </table>

</section>
<section name="Installing services">
<p>
The safest way to manually install the service is to use the provided
<b>service.bat</b> script. Administrator privileges are required to run this
script. If necessary, you can use the <code>/user</code> switch to specify
a user to use for the installation of the service.
</p>
<p>
<strong>NOTE:</strong> If User Account Control (UAC) is enabled you will be
asked for additional privileges when 'Tomcat<version-major/>.exe' is launched by
the script.<br/>
If you want to pass additional options to service installer as
<code>PR_*</code> environment variables, you have to either configure them
globally in OS, or launch the program that sets them with elevated privileges
(e.g. right-click on cmd.exe and select "Run as administrator"; on Windows 8
(or later) or Windows Server 2012 (or later), you can open an elevated command
prompt for the current directory from the Explorer
by clicking on the "File" menu bar). See issue <bug>56143</bug> for details.
</p>

<source>Install the service named 'Tomcat<version-major/>'
C:\> service.bat install</source>

<p>There is a 2nd optional parameter that lets you specify the name of the
service, as displayed in Windows services.</p>

<source>Install the service named 'MyService'
C:\> service.bat install MyService</source>

<p>When installing the service with a non-default name,
tomcat<version-major/>.exe and tomcat<version-major/>w.exe may be renamed to
match the chosen service name. To do this, use the <code>--rename</code>
option.</p>

<source>Install the service named 'MyService' with renaming
C:\> service.bat install MyService --rename</source>

<p>
If using tomcat<version-major/>.exe, you need to use the <b>//IS//</b> parameter.</p>

<source>Install the service named 'Tomcat<version-major/>'
C:\> tomcat<version-major/> //IS//Tomcat<version-major/> --DisplayName="Apache Tomcat <version-major/>" ^
     --Install="C:\Program Files\Tomcat\bin\tomcat<version-major/>.exe" --Jvm=auto ^
     --StartMode=jvm --StopMode=jvm ^
     --StartClass=org.apache.catalina.startup.Bootstrap --StartParams=start ^
     --StopClass=org.apache.catalina.startup.Bootstrap --StopParams=stop</source>

</section>
<section name="Updating services">
<p>
To update the service parameters, you need to use the <b>//US//</b> parameter.
</p>

<source>Update the service named 'Tomcat<version-major/>'
C:\> tomcat<version-major/> //US//Tomcat<version-major/> --Description="Apache Tomcat Server - https://tomcat.apache.org/ " ^
     --Startup=auto --Classpath=%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\bin\bootstrap.jar</source>

<p>If you gave the service an optional name, you need to specify it like this:
</p>

<source>Update the service named 'MyService'
C:\> tomcat<version-major/> //US//MyService --Description="Apache Tomcat Server - https://tomcat.apache.org/ " ^
     --Startup=auto --Classpath=%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\bin\bootstrap.jar</source>

</section>
<section name="Removing services">
<p>
To remove the service, you need to use the <b>//DS//</b> parameter.<br/>
If the service is running it will be stopped and then deleted.</p>

<source>Remove the service named 'Tomcat<version-major/>'
C:\> tomcat<version-major/> //DS//Tomcat<version-major/></source>

<p>If you gave the service an optional name, you need to specify it like this:
</p>

<source>Remove the service named 'MyService'
C:\> tomcat<version-major/> //DS//MyService</source>

</section>
<section name="Debugging services">
<p>
To run the service in console mode, you need to use the <b>//TS//</b> parameter.
The service shutdown can be initiated by pressing <b>CTRL+C</b> or
<b>CTRL+BREAK</b>.
If you rename the tomcat<version-major/>.exe to testservice.exe then you can just execute the
testservice.exe and this command mode will be executed by default.</p>

<source>Run the service named 'Tomcat<version-major/>' in console mode
C:\> tomcat<version-major/> //TS//Tomcat<version-major/> [additional arguments]
Or simply execute:
C:\> tomcat<version-major/></source>

</section>
<section name="Multiple Instances">
<p>
Tomcat supports installation of multiple instances. You can have a single
installation of Tomcat with multiple instances running on different IP/port
combinations, or multiple Tomcat versions, each running one or more instances on
different IP/ports.</p>
<p>
Each instance folder will need the following structure:
</p>
<ul>
<li>conf</li>
<li>logs</li>
<li>temp</li>
<li>webapps</li>
<li>work</li>
</ul>
<p>
At a minimum, conf should contain a copy of the following files from
CATALINA_HOME\conf\. Any files not copied and edited, will be picked up by
default from CATALINA_HOME\conf, i.e. CATALINA_BASE\conf files override defaults
from CATALINA_HOME\conf.</p>
<ul>
<li>server.xml</li>
<li>web.xml</li>
</ul>
<p>
You must edit CATALINA_BASE\conf\server.xml to specify a unique IP/port for the
instance to listen on. Find the line that contains
<code>&lt;Connector port="8080" ...</code> and add an address attribute and/or
update the port number so as to specify a unique IP/port combination.</p>
<p>
To install an instance, first set the CATALINA_HOME environment variable to the
name of the Tomcat installation directory. Then create a second environment
variable CATALINA_BASE and point this to the instance folder. Then run
"service.bat install" command specifying a service name.</p>

<source>set CATALINA_HOME=c:\tomcat_<version-major/>
set CATALINA_BASE=c:\tomcat_<version-major/>\instances\instance1
service.bat install instance1</source>

<p>
To modify the service settings, you can run <b>tomcat<version-major/>w //ES//instance1</b>.
</p>
<p>
For additional instances, create additional instance folder, update the
CATALINA_BASE environment variable, and run the "service.bat install" again.</p>

<source>set CATALINA_BASE=c:\tomcat_<version-major/>\instances\instance2
service.bat install instance2</source>

</section>
</body>
</document>
