support for the Srevlet specification using the header recommended in the
specification. The default value is <code>false</code>.</p>
</attribute>
+
+
</attributes>
after accepting a connection, for the request URI line to be
presented. The default value is infinite (i.e. no timeout).</p>
</attribute>
+
+ <attribute name="executor" required="false">
+ <p>A reference to the name in an <a href="executor.html">Executor</a> element.
+ If this attribute is enabled, and the named executor exists, the connector will
+ use the executor, and all the other thread attributes will be ignored.</p>
+ </attribute>
<attribute name="keepAliveTimeout" required="false">
<p>The number of milliseconds this <strong>Connector</strong> will wait,
--- /dev/null
+<?xml version="1.0"?>
+<!DOCTYPE document [
+ <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="executor.html">
+
+ &project;
+
+ <properties>
+ <author email="fhanik@apache.org">Filip Hanik</author>
+ <title>The Executor (thread pool)</title>
+ </properties>
+
+<body>
+
+
+<section name="Introduction">
+
+ <p>The <strong>Executor</strong> represents a thread pool that can be shared
+ between components in Tomcat. Historically there has been a thread pool per
+ connector created but this allows you to share a thread pool, between (primarly) connector
+ but also other components when those get configured to support executors</p>
+
+
+ <p>The executor has to implement the <code>org.apache.catalina.Executor</code> interface.</p>
+
+ <p>The executor is a nested element to the <a href="service.html">Service</a> element.
+ And in order for it to be picked up by the connectors, the Executor element has to appear
+ prior to the Connector element in server.xml</p>
+</section>
+
+
+<section name="Attributes">
+
+ <subsection name="Common Attributes">
+
+ <p>All implementations of <strong>Executor</strong>
+ support the following attributes:</p>
+
+ <attributes>
+
+ <attribute name="className" required="false">
+ <p>The class of the implementation. The implementation has to implement the
+ <code>org.apache.catalina.Executor</code> interface.
+ This interface ensures that the object can be referenced through its <code>name</code> attribute
+ and that implements Lifecycle, so that it can be started and stopped with the container.
+ The default value for the className is <code>org.apache.catalina.core.StandardThreadExecutor</code></p>
+ </attribute>
+
+ <attribute name="name" required="true">
+ <p>The name used to reference this pool in other places in server.xml.
+ The name is required and must be unique.</p>
+ </attribute>
+
+ </attributes>
+
+ </subsection>
+
+ <subsection name="Standard Implementation">
+
+ <p>
+ The default implementation supports the following attributes:</p>
+
+ <attributes>
+
+ <attribute name="threadPriority" required="false">
+ <p>(int) The thread priority for threads in the executor, the default is <code>Thread.NORM_PRIORITY</code></p>
+ </attribute>
+ <attribute name="daemon" required="false">
+ <p>(boolean) Whether the threads should be daemon threads or not, the default is <code>true</code></p>
+ </attribute>
+ <attribute name="namePrefix" required="false">
+ <p>(String) The name prefix for each thread created by the executor.
+ The thread name for an individual thread will be <code>namePrefix+threadNumber</code></p>
+ </attribute>
+ <attribute name="maxThreads" required="false">
+ <p>(int) The max number of active threads in this pool, default is <code>200</code></p>
+ </attribute>
+ <attribute name="minSpareThreads" required="false">
+ <p>(int) The minimum number of threads always kept alive, default is <code>25</code></p>
+ </attribute>
+ <attribute name="maxIdleTime" required="false">
+ <p>(int) The number of milliseconds before an idle thread shutsdown, unless the number of active threads are less
+ or equal to minSpareThreads. Default value is <code>60000</code>(1 minute)</p>
+ </attribute>
+ </attributes>
+
+
+ </subsection>
+</section>
+
+
+</body>
+
+</document>
support for the Servlet specification using the header recommended in the
specification. The default value is <code>false</code>.</p>
</attribute>
+
+
</attributes>
after accepting a connection, for the request URI line to be
presented. The default value is 60000 (i.e. 60 seconds).</p>
</attribute>
+
+ <attribute name="executor" required="false">
+ <p>A reference to the name in an <a href="executor.html">Executor</a> element.
+ If this attribute is enabled, and the named executor exists, the connector will
+ use the executor, and all the other thread attributes will be ignored.</p>
+ </attribute>
<attribute name="keepAliveTimeout" required="false">
<p>The number of milliseconds this <strong>Connector</strong> will wait,
<attributes>
<attribute name="useExecutor" required="false">
- Set to true to use the NIO thread pool executor. The default value is <code>true</code>.
+ <p>Set to true to use the NIO thread pool executor. The default value is <code>true</code>.
If set to false, it uses a thread pool based on a stack for its execution.
Generally, using the executor yields a little bit slower performance, but yields a better
fairness for processing connections in a high load environment as the traffic gets queued through a
FIFO queue. If set to true(default) then the max pool size is the <code>maxThreads</code> attribute
and the core pool size is the <code>minSpareThreads</code>.
+ This value is ignored if the <code>executor</code> attribute is present and points to a valid shared thread pool.
+ </p>
</attribute>
<attribute name="acceptorThreadCount" required="false">
<p>The number of threads to be used to accept connections. Increase this value on a multi CPU machine,