<?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="server.html">

  &project;

  <properties>
    <author email="craigmcc@apache.org">Craig R. McClanahan</author>
    <title>The Server Component</title>
  </properties>

<body>

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

<section name="Introduction">

  <p>A <strong>Server</strong> element represents the entire Catalina
  servlet container.  Therefore, it must be the single outermost element
  in the <code>conf/server.xml</code> configuration file.  Its attributes
  represent the characteristics of the servlet container as a whole.</p>

</section>


<section name="Attributes">

  <subsection name="Common Attributes">

  <p>All implementations of <strong>Server</strong>
  support the following attributes:</p>

  <attributes>

    <attribute name="className" required="false">
      <p>Java class name of the implementation to use.  This class must
      implement the <code>org.apache.catalina.Server</code> interface.
      If no class name is specified, the standard implementation will
      be used.</p>
    </attribute>

    <attribute name="address" required="false">
      <p>The TCP/IP address on which this server waits for a shutdown
      command. If no address is specified, <code>localhost</code> is used.</p>
    </attribute>

    <attribute name="port" required="true">
      <p>The TCP/IP port number on which this server waits for a shutdown
      command. Set to <code>-1</code> to disable the shutdown port.</p>
      <p>Note: Disabling the shutdown port works well when Tomcat is started
      using <a href="https://commons.apache.org/daemon/">Apache Commons Daemon</a>
      (running as a service on Windows or with jsvc on un*xes). It cannot be
      used when running Tomcat with the standard shell scripts though, as it
      will prevent shutdown.bat|.sh and catalina.bat|.sh from stopping it
      gracefully.</p>
    </attribute>

    <attribute name="portOffset" required="false">
      <p>The offset to apply to <code>port</code> and to the ports of any
      nested connectors. It must be a non-negative integer. If not specified,
      the default value of <code>0</code> is used.</p>
    </attribute>

    <attribute name="shutdown" required="true">
      <p>The command string that must be received via a TCP/IP connection
      to the specified port number, in order to shut down Tomcat.</p>
    </attribute>

    <attribute name="utilityThreads" required="false">
      <p>The number of threads this <strong>Service</strong> will use for
      various utility tasks, including recurring ones. The special value
      of 0 will result in the value of
      <code>Runtime.getRuntime().availableProcessors()</code> being
      used. Negative values will result in
      <code>Runtime.getRuntime().availableProcessors() + value</code> being
      used unless this is less than 1 in which case 1 thread will be used.
      The default value is 1.
      </p>
    </attribute>

  </attributes>

  </subsection>

  <subsection name="Standard Implementation">

  <p>The standard implementation of <strong>Server</strong> is
  <strong>org.apache.catalina.core.StandardServer</strong>.
  It supports the following additional attributes (in addition to the
  common attributes listed above):</p>

  <attributes>

    <attribute name="utilityThreadsAsDaemon" required="false">
      <p>Set the daemon flag value for the utility threads. The default value
      is <code>false</code>.
      </p>
    </attribute>

    <attribute name="periodicEventDelay" required="false">
      <p>This value represents the delay in seconds between periodic
      lifecycle event invocation of the lifecycle listeners configured on this
      Server. The value is in seconds, and a negative or zero value will
      disable the invocations. If not specified, the default value for this
      attribute is 10 seconds.</p>
    </attribute>

  </attributes>

  </subsection>

</section>


<section name="Nested Components">

  <p>The following components may be nested inside a <strong>Server</strong>
  element:</p>
  <ul>
  <li><a href="service.html"><strong>Service</strong></a> -
      One or more service element.</li>
  <li><a href="globalresources.html"><strong>GlobalNamingResources</strong></a> -
      Configure the JNDI global resources for the server.</li>
  </ul>

</section>


<section name="Special Features">

  <p>There are no special features associated with a <strong>Server</strong>.
  </p>

</section>


</body>

</document>
