blob: 772e332503e2979ab07926c6047d8cb443650e1a [file] [log] [blame]
刘洪青6266f992017-05-15 21:21:03 +08001<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - The AJP Connector</title><meta name="author" content="Remy Maucherat"><meta name="author" content="Yoav Shapira"><meta name="author" content="Andrew R. Jaquith"><style type="text/css" media="print">
2 .noPrint {display: none;}
3 td#mainBody {width: 100%;}
4</style><style type="text/css">
5code {background-color:rgb(224,255,255);padding:0 0.1em;}
6code.attributeName, code.propertyName {background-color:transparent;}
7
8
9table {
10 border-collapse: collapse;
11 text-align: left;
12}
13table *:not(table) {
14 /* Prevent border-collapsing for table child elements like <div> */
15 border-collapse: separate;
16}
17
18th {
19 text-align: left;
20}
21
22
23div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {
24 background-color: transparent;
25}
26div.codeBox {
27 overflow: auto;
28 margin: 1em 0;
29}
30div.codeBox pre {
31 margin: 0;
32 padding: 4px;
33 border: 1px solid #999;
34 border-radius: 5px;
35 background-color: #eff8ff;
36 display: table; /* To prevent <pre>s from taking the complete available width. */
37 /*
38 When it is officially supported, use the following CSS instead of display: table
39 to prevent big <pre>s from exceeding the browser window:
40 max-width: available;
41 width: min-content;
42 */
43}
44
45div.codeBox pre.wrap {
46 white-space: pre-wrap;
47}
48
49
50table.defaultTable tr, table.detail-table tr {
51 border: 1px solid #CCC;
52}
53
54table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {
55 background-color: #FAFBFF;
56}
57
58table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {
59 background-color: #EEEFFF;
60}
61
62table.defaultTable th, table.detail-table th {
63 background-color: #88b;
64 color: #fff;
65}
66
67table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {
68 padding: 5px 8px;
69}
70
71
72p.notice {
73 border: 1px solid rgb(255, 0, 0);
74 background-color: rgb(238, 238, 238);
75 color: rgb(0, 51, 102);
76 padding: 0.5em;
77 margin: 1em 2em 1em 1em;
78}
79</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="
Hongqing Liufd5ee812014-05-10 16:32:51 +080080 The Apache Tomcat Servlet/JSP Container
刘洪青6266f992017-05-15 21:21:03 +080081 " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The AJP Connector</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>
82<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementations">Standard Implementations</a></li><li><a href="#Java_TCP_socket_attributes">Java TCP socket attributes</a></li><li><a href="#NIO_specific_configuration">NIO specific configuration</a></li><li><a href="#APR/native_specific_configuration">APR/native specific configuration</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a><ol><li><a href="#Proxy_Support">Proxy Support</a></li><li><a href="#Connector_Comparison">Connector Comparison</a></li></ol></li></ul>
Hongqing Liufd5ee812014-05-10 16:32:51 +080083</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>
84
85 <p>The <strong>AJP Connector</strong> element represents a
86 <strong>Connector</strong> component that communicates with a web
87 connector via the <code>AJP</code> protocol. This is used for cases
刘洪青6266f992017-05-15 21:21:03 +080088 where you wish to invisibly integrate Tomcat into an existing (or new)
Hongqing Liufd5ee812014-05-10 16:32:51 +080089 Apache installation, and you want Apache to handle the static content
90 contained in the web application, and/or utilize Apache's SSL
91 processing.</p>
92
93 <p>This connector supports load balancing when used in conjunction with
刘洪青6266f992017-05-15 21:21:03 +080094 the <code>jvmRoute</code> attribute of the
Hongqing Liufd5ee812014-05-10 16:32:51 +080095 <a href="engine.html">Engine</a>.</p>
96
刘洪青6266f992017-05-15 21:21:03 +080097 <p>The native connectors supported with this Tomcat release are:</p>
98 <ul>
99 <li>JK 1.2.x with any of the supported servers. See
100 <a href="http://tomcat.apache.org/connectors-doc/">the JK docs</a>
Hongqing Liufd5ee812014-05-10 16:32:51 +0800101 for details.</li>
刘洪青6266f992017-05-15 21:21:03 +0800102 <li>mod_proxy on Apache httpd 2.x (included by default in Apache HTTP
103 Server 2.2), with AJP enabled: see
104 <a href="http://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.html">the
105 httpd docs</a> for details.</li>
106 </ul>
Hongqing Liufd5ee812014-05-10 16:32:51 +0800107
刘洪青6266f992017-05-15 21:21:03 +0800108 <p><b>Other native connectors supporting AJP may work, but are no longer
109 supported.</b></p>
Hongqing Liufd5ee812014-05-10 16:32:51 +0800110
111</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>
112
113 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>
114
115 <p>All implementations of <strong>Connector</strong>
116 support the following attributes:</p>
117
刘洪青6266f992017-05-15 21:21:03 +0800118 <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">ajpFlush</code></td><td align="left" valign="center">
119 <p>A boolean value which can be used to enable or disable sending
120 AJP flush messages to the fronting proxy whenever an explicit
121 flush happens. The default value is <code>true</code>.<br>
122 An AJP flush message is a SEND_BODY_CHUNK packet with no body content.
123 Proxy implementations like mod_jk or mod_proxy_ajp will flush the
124 data buffered in the web server to the client when they receive
125 such a packet. Setting this to <code>false</code> can reduce
126 AJP packet traffic but might delay sending packets to the client.
127 At the end of the response, AJP does always flush to the client.</p>
128 </td></tr><tr><td align="left" valign="center"><code class="attributeName">allowTrace</code></td><td align="left" valign="center">
Hongqing Liufd5ee812014-05-10 16:32:51 +0800129 <p>A boolean value which can be used to enable or disable the TRACE
130 HTTP method. If not specified, this attribute is set to false.</p>
刘洪青6266f992017-05-15 21:21:03 +0800131 </td></tr><tr><td align="left" valign="center"><code class="attributeName">asyncTimeout</code></td><td align="left" valign="center">
132 <p>The default timeout for asynchronous requests in milliseconds. If not
133 specified, this attribute is set to 10000 (10 seconds).</p>
134 </td></tr><tr><td align="left" valign="center"><code class="attributeName">enableLookups</code></td><td align="left" valign="center">
Hongqing Liufd5ee812014-05-10 16:32:51 +0800135 <p>Set to <code>true</code> if you want calls to
136 <code>request.getRemoteHost()</code> to perform DNS lookups in
137 order to return the actual host name of the remote client. Set
138 to <code>false</code> to skip the DNS lookup and return the IP
139 address in String form instead (thereby improving performance).
140 By default, DNS lookups are disabled.</p>
刘洪青6266f992017-05-15 21:21:03 +0800141 </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxHeaderCount</code></td><td align="left" valign="center">
Hongqing Liufd5ee812014-05-10 16:32:51 +0800142 <p>The maximum number of headers in a request that are allowed by the
143 container. A request that contains more headers than the specified limit
144 will be rejected. A value of less than 0 means no limit.
145 If not specified, a default of 100 is used.</p>
刘洪青6266f992017-05-15 21:21:03 +0800146 </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxParameterCount</code></td><td align="left" valign="center">
147 <p>The maximum number of parameter and value pairs (GET plus POST) which
148 will be automatically parsed by the container. Parameter and value pairs
149 beyond this limit will be ignored. A value of less than 0 means no limit.
150 If not specified, a default of 10000 is used. Note that
Hongqing Liufd5ee812014-05-10 16:32:51 +0800151 <code>FailedRequestFilter</code> <a href="filter.html">filter</a> can be
152 used to reject requests that hit the limit.</p>
刘洪青6266f992017-05-15 21:21:03 +0800153 </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxPostSize</code></td><td align="left" valign="center">
Hongqing Liufd5ee812014-05-10 16:32:51 +0800154 <p>The maximum size in bytes of the POST which will be handled by
刘洪青6266f992017-05-15 21:21:03 +0800155 the container FORM URL parameter parsing. The limit can be disabled by
156 setting this attribute to a value less than zero. If not specified, this
157 attribute is set to 2097152 (2 megabytes). Note that the
158 <a href="filter.html#Failed_Request_Filter"><code>FailedRequestFilter</code></a>
159 can be used to reject requests that exceed this limit.</p>
160 </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxSavePostSize</code></td><td align="left" valign="center">
Hongqing Liufd5ee812014-05-10 16:32:51 +0800161 <p>The maximum size in bytes of the POST which will be saved/buffered by
162 the container during FORM or CLIENT-CERT authentication. For both types
163 of authentication, the POST will be saved/buffered before the user is
164 authenticated. For CLIENT-CERT authentication, the POST is buffered for
165 the duration of the SSL handshake and the buffer emptied when the request
166 is processed. For FORM authentication the POST is saved whilst the user
167 is re-directed to the login form and is retained until the user
168 successfully authenticates or the session associated with the
169 authentication request expires. The limit can be disabled by setting this
170 attribute to -1. Setting the attribute to zero will disable the saving of
171 POST data during authentication. If not specified, this attribute is set
172 to 4096 (4 kilobytes).</p>
刘洪青6266f992017-05-15 21:21:03 +0800173 </td></tr><tr><td align="left" valign="center"><code class="attributeName">parseBodyMethods</code></td><td align="left" valign="center">
Hongqing Liufd5ee812014-05-10 16:32:51 +0800174 <p>A comma-separated list of HTTP methods for which request
175 bodies will be parsed for request parameters identically
176 to POST. This is useful in RESTful applications that want to
177 support POST-style semantics for PUT requests.
178 Note that any setting other than <code>POST</code> causes Tomcat
刘洪青6266f992017-05-15 21:21:03 +0800179 to behave in a way that goes against the intent of the servlet
Hongqing Liufd5ee812014-05-10 16:32:51 +0800180 specification.
181 The HTTP method TRACE is specifically forbidden here in accordance
182 with the HTTP specification.
183 The default is <code>POST</code></p>
刘洪青6266f992017-05-15 21:21:03 +0800184 </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">port</code></strong></td><td align="left" valign="center">
Hongqing Liufd5ee812014-05-10 16:32:51 +0800185 <p>The TCP port number on which this <strong>Connector</strong>
186 will create a server socket and await incoming connections. Your
187 operating system will allow only one server application to listen
刘洪青6266f992017-05-15 21:21:03 +0800188 to a particular port number on a particular IP address. If the special
189 value of 0 (zero) is used, then Tomcat will select a free port at random
190 to use for this connector. This is typically only useful in embedded and
191 testing applications.</p>
192 </td></tr><tr><td align="left" valign="center"><code class="attributeName">protocol</code></td><td align="left" valign="center">
193 <p>Sets the protocol to handle incoming traffic. To configure an AJP
194 connector this must be specified. If no value for protocol is provided,
195 an <a href="http.html">HTTP connector</a> rather than an AJP connector
196 will be configured.<br>
197 The standard protocol value for an AJP connector is <code>AJP/1.3</code>
198 which uses an auto-switching mechanism to select either a Java based
199 connector or an APR/native based connector. If the
200 <code>PATH</code> (Windows) or <code>LD_LIBRARY_PATH</code> (on most unix
201 systems) environment variables contain the Tomcat native library, the
202 native/APR connector will be used. If the native library cannot be
203 found, the Java BIO based connector will be used.<br>
Hongqing Liufd5ee812014-05-10 16:32:51 +0800204 To use an explicit protocol rather than rely on the auto-switching
205 mechanism described above, the following values may be used:<br>
Hongqing Liufd5ee812014-05-10 16:32:51 +0800206 <code>org.apache.coyote.ajp.AjpProtocol</code>
刘洪青6266f992017-05-15 21:21:03 +0800207 - blocking Java connector<br>
208 <code>org.apache.coyote.ajp.AjpNioProtocol</code>
209 - non blocking Java connector.<br>
Hongqing Liufd5ee812014-05-10 16:32:51 +0800210 <code>org.apache.coyote.ajp.AjpAprProtocol</code>
211 - the APR/native connector.<br>
刘洪青6266f992017-05-15 21:21:03 +0800212 Custom implementations may also be used.<br>
213 Take a look at our <a href="#Connector_Comparison">Connector
214 Comparison</a> chart.
215 </p>
216 </td></tr><tr><td align="left" valign="center"><code class="attributeName">proxyName</code></td><td align="left" valign="center">
Hongqing Liufd5ee812014-05-10 16:32:51 +0800217 <p>If this <strong>Connector</strong> is being used in a proxy
218 configuration, configure this attribute to specify the server name
219 to be returned for calls to <code>request.getServerName()</code>.
刘洪青6266f992017-05-15 21:21:03 +0800220 See <a href="#Proxy_Support">Proxy Support</a> for more
Hongqing Liufd5ee812014-05-10 16:32:51 +0800221 information.</p>
刘洪青6266f992017-05-15 21:21:03 +0800222 </td></tr><tr><td align="left" valign="center"><code class="attributeName">proxyPort</code></td><td align="left" valign="center">
Hongqing Liufd5ee812014-05-10 16:32:51 +0800223 <p>If this <strong>Connector</strong> is being used in a proxy
224 configuration, configure this attribute to specify the server port
225 to be returned for calls to <code>request.getServerPort()</code>.
刘洪青6266f992017-05-15 21:21:03 +0800226 See <a href="#Proxy_Support">Proxy Support</a> for more
Hongqing Liufd5ee812014-05-10 16:32:51 +0800227 information.</p>
刘洪青6266f992017-05-15 21:21:03 +0800228 </td></tr><tr><td align="left" valign="center"><code class="attributeName">redirectPort</code></td><td align="left" valign="center">
Hongqing Liufd5ee812014-05-10 16:32:51 +0800229 <p>If this <strong>Connector</strong> is supporting non-SSL
230 requests, and a request is received for which a matching
231 <code>&lt;security-constraint&gt;</code> requires SSL transport,
232 Catalina will automatically redirect the request to the port
233 number specified here.</p>
刘洪青6266f992017-05-15 21:21:03 +0800234 </td></tr><tr><td align="left" valign="center"><code class="attributeName">scheme</code></td><td align="left" valign="center">
Hongqing Liufd5ee812014-05-10 16:32:51 +0800235 <p>Set this attribute to the name of the protocol you wish to have
236 returned by calls to <code>request.getScheme()</code>. For
237 example, you would set this attribute to "<code>https</code>"
238 for an SSL Connector. The default value is "<code>http</code>".
刘洪青6266f992017-05-15 21:21:03 +0800239 </p>
240 </td></tr><tr><td align="left" valign="center"><code class="attributeName">secure</code></td><td align="left" valign="center">
Hongqing Liufd5ee812014-05-10 16:32:51 +0800241 <p>Set this attribute to <code>true</code> if you wish to have
242 calls to <code>request.isSecure()</code> to return <code>true</code>
刘洪青6266f992017-05-15 21:21:03 +0800243 for requests received by this Connector. You would want this on an
244 SSL Connector or a non SSL connector that is receiving data from a
245 SSL accelerator, like a crypto card, a SSL appliance or even a webserver.
246 The default value is <code>false</code>.</p>
247 </td></tr><tr><td align="left" valign="center"><code class="attributeName">URIEncoding</code></td><td align="left" valign="center">
Hongqing Liufd5ee812014-05-10 16:32:51 +0800248 <p>This specifies the character encoding used to decode the URI bytes,
249 after %xx decoding the URL. If not specified, ISO-8859-1 will be used.
250 </p>
刘洪青6266f992017-05-15 21:21:03 +0800251 </td></tr><tr><td align="left" valign="center"><code class="attributeName">useBodyEncodingForURI</code></td><td align="left" valign="center">
Hongqing Liufd5ee812014-05-10 16:32:51 +0800252 <p>This specifies if the encoding specified in contentType should be used
253 for URI query parameters, instead of using the URIEncoding. This
254 setting is present for compatibility with Tomcat 4.1.x, where the
255 encoding specified in the contentType, or explicitly set using
256 Request.setCharacterEncoding method was also used for the parameters from
257 the URL. The default value is <code>false</code>.
258 </p>
刘洪青6266f992017-05-15 21:21:03 +0800259 <p><em>Notes:</em> See notes on this attribute in
260 <a href="http.html">HTTP Connector</a> documentation.</p>
261 </td></tr><tr><td align="left" valign="center"><code class="attributeName">useIPVHosts</code></td><td align="left" valign="center">
Hongqing Liufd5ee812014-05-10 16:32:51 +0800262 <p>Set this attribute to <code>true</code> to cause Tomcat to use
刘洪青6266f992017-05-15 21:21:03 +0800263 the IP address passed by the native web server to determine the Host
Hongqing Liufd5ee812014-05-10 16:32:51 +0800264 to send the request to. The default value is <code>false</code>.</p>
刘洪青6266f992017-05-15 21:21:03 +0800265 </td></tr><tr><td align="left" valign="center"><code class="attributeName">xpoweredBy</code></td><td align="left" valign="center">
Hongqing Liufd5ee812014-05-10 16:32:51 +0800266 <p>Set this attribute to <code>true</code> to cause Tomcat to advertise
267 support for the Servlet specification using the header recommended in the
268 specification. The default value is <code>false</code>.</p>
269 </td></tr></table>
270
271 </blockquote></td></tr></table>
272
273 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Standard Implementations"><!--()--></a><a name="Standard_Implementations"><strong>Standard Implementations</strong></a></font></td></tr><tr><td><blockquote>
274
刘洪青6266f992017-05-15 21:21:03 +0800275 <p>To use AJP, you must specify the protocol attribute (see above).</p>
Hongqing Liufd5ee812014-05-10 16:32:51 +0800276
刘洪青6266f992017-05-15 21:21:03 +0800277 <p>The standard AJP connectors (BIO, NIO and APR/native) all support the
278 following attributes in addition to the common Connector attributes listed
279 above.</p>
Hongqing Liufd5ee812014-05-10 16:32:51 +0800280
刘洪青6266f992017-05-15 21:21:03 +0800281 <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">acceptCount</code></td><td align="left" valign="center">
282 <p>The maximum queue length for incoming connection requests when
283 all possible request processing threads are in use. Any requests
284 received when the queue is full will be refused. The default
285 value is 100.</p>
286 </td></tr><tr><td align="left" valign="center"><code class="attributeName">acceptorThreadCount</code></td><td align="left" valign="center">
287 <p>The number of threads to be used to accept connections. Increase this
288 value on a multi CPU machine, although you would never really need more
289 than <code>2</code>. Also, with a lot of non keep alive connections, you
290 might want to increase this value as well. Default value is
291 <code>1</code>.</p>
292 </td></tr><tr><td align="left" valign="center"><code class="attributeName">acceptorThreadPriority</code></td><td align="left" valign="center">
293 <p>The priority of the acceptor threads. The threads used to accept
294 new connections. The default value is <code>5</code> (the value of the
295 <code>java.lang.Thread.NORM_PRIORITY</code> constant). See the JavaDoc
296 for the <code>java.lang.Thread</code> class for more details on what
297 this priority means.</p>
298 </td></tr><tr><td align="left" valign="center"><code class="attributeName">address</code></td><td align="left" valign="center">
Hongqing Liufd5ee812014-05-10 16:32:51 +0800299 <p>For servers with more than one IP address, this attribute
300 specifies which address will be used for listening on the specified
301 port. By default, this port will be used on all IP addresses
302 associated with the server. A value of <code>127.0.0.1</code>
303 indicates that the Connector will only listen on the loopback
304 interface.</p>
刘洪青6266f992017-05-15 21:21:03 +0800305 </td></tr><tr><td align="left" valign="center"><code class="attributeName">bindOnInit</code></td><td align="left" valign="center">
306 <p>Controls when the socket used by the connector is bound. By default it
307 is bound when the connector is initiated and unbound when the connector is
308 destroyed. If set to <code>false</code>, the socket will be bound when the
309 connector is started and unbound when it is stopped.</p>
310 </td></tr><tr><td align="left" valign="center"><code class="attributeName">clientCertProvider</code></td><td align="left" valign="center">
Hongqing Liufd5ee812014-05-10 16:32:51 +0800311 <p>When client certificate information is presented in a form other than
312 instances of <code>java.security.cert.X509Certificate</code> it needs to
313 be converted before it can be used and this property controls which JSSE
314 provider is used to perform the conversion. For example it is used with
315 the AJP connectors, the <a href="http.html">HTTP APR connector</a> and
316 with the <a href="valve.html#SSL_Authenticator_Valve">
317 org.apache.catalina.valves.SSLValve</a>.If not specified, the default
318 provider will be used.</p>
刘洪青6266f992017-05-15 21:21:03 +0800319 </td></tr><tr><td align="left" valign="center"><code class="attributeName">connectionLinger</code></td><td align="left" valign="center">
320 <p>The number of seconds during which the sockets used by this
321 <strong>Connector</strong> will linger when they are closed. The default
322 value is <code>-1</code> which disables socket linger.</p>
323 </td></tr><tr><td align="left" valign="center"><code class="attributeName">connectionTimeout</code></td><td align="left" valign="center">
Hongqing Liufd5ee812014-05-10 16:32:51 +0800324 <p>The number of milliseconds this <strong>Connector</strong> will wait,
325 after accepting a connection, for the request URI line to be
刘洪青6266f992017-05-15 21:21:03 +0800326 presented. The default value for AJP protocol connectors
327 is <code>-1</code> (i.e. infinite).</p>
328 </td></tr><tr><td align="left" valign="center"><code class="attributeName">executor</code></td><td align="left" valign="center">
329 <p>A reference to the name in an <a href="executor.html">Executor</a>
330 element. If this attribute is set, and the named executor exists, the
331 connector will use the executor, and all the other thread attributes will
332 be ignored. Note that if a shared executor is not specified for a
333 connector then the connector will use a private, internal executor to
334 provide the thread pool.</p>
335 </td></tr><tr><td align="left" valign="center"><code class="attributeName">executorTerminationTimeoutMillis</code></td><td align="left" valign="center">
336 <p>The time that the private internal executor will wait for request
337 processing threads to terminate before continuing with the process of
338 stopping the connector. If not set, the default is <code>0</code> (zero)
339 for the BIO connector and <code>5000</code> (5 seconds) for the NIO and
340 APR/native connectors.</p>
341 </td></tr><tr><td align="left" valign="center"><code class="attributeName">keepAliveTimeout</code></td><td align="left" valign="center">
Hongqing Liufd5ee812014-05-10 16:32:51 +0800342 <p>The number of milliseconds this <strong>Connector</strong> will wait for
343 another AJP request before closing the connection.
344 The default value is to use the value that has been set for the
345 connectionTimeout attribute.</p>
刘洪青6266f992017-05-15 21:21:03 +0800346 </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxConnections</code></td><td align="left" valign="center">
347 <p>The maximum number of connections that the server will accept and
348 process at any given time. When this number has been reached, the server
349 will accept, but not process, one further connection. This additional
350 connection be blocked until the number of connections being processed
351 falls below <strong>maxConnections</strong> at which point the server will
352 start accepting and processing new connections again. Note that once the
353 limit has been reached, the operating system may still accept connections
354 based on the <code>acceptCount</code> setting. The default value varies by
355 connector type. For BIO the default is the value of
356 <strong>maxThreads</strong> unless an <a href="executor.html">Executor</a>
357 is used in which case the default will be the value of maxThreads from the
358 executor. For NIO the default is <code>10000</code>.
359 For APR/native, the default is <code>8192</code>.</p>
360 <p>Note that for APR/native on Windows, the configured value will be
361 reduced to the highest multiple of 1024 that is less than or equal to
362 maxConnections. This is done for performance reasons.<br>
363 If set to a value of -1, the maxConnections feature is disabled
364 and connections are not counted.</p>
365 </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxCookieCount</code></td><td align="left" valign="center">
366 <p>The maximum number of cookies that are permitted for a request. A value
367 of less than zero means no limit. If not specified, a default value of 200
368 will be used.</p>
369 </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxThreads</code></td><td align="left" valign="center">
Hongqing Liufd5ee812014-05-10 16:32:51 +0800370 <p>The maximum number of request processing threads to be created
371 by this <strong>Connector</strong>, which therefore determines the
372 maximum number of simultaneous requests that can be handled. If
373 not specified, this attribute is set to 200. If an executor is associated
刘洪青6266f992017-05-15 21:21:03 +0800374 with this connector, this attribute is ignored as the connector will
375 execute tasks using the executor rather than an internal thread pool. Note
376 that if an executor is configured any value set for this attribute will be
377 recorded correctly but it will be reported (e.g. via JMX) as
378 <code>-1</code> to make clear that it is not used.</p>
379 </td></tr><tr><td align="left" valign="center"><code class="attributeName">minSpareThreads</code></td><td align="left" valign="center">
380 <p>The minimum number of threads always kept running. If not specified,
381 the default of <code>10</code> is used. If an executor is associated
382 with this connector, this attribute is ignored as the connector will
383 execute tasks using the executor rather than an internal thread pool. Note
384 that if an executor is configured any value set for this attribute will be
385 recorded correctly but it will be reported (e.g. via JMX) as
386 <code>-1</code> to make clear that it is not used.</p>
387 </td></tr><tr><td align="left" valign="center"><code class="attributeName">packetSize</code></td><td align="left" valign="center">
Hongqing Liufd5ee812014-05-10 16:32:51 +0800388 <p>This attribute sets the maximum AJP packet size in Bytes. The maximum
389 value is 65536. It should be the same as the <code>max_packet_size</code>
390 directive configured for mod_jk. Normally it is not necessary to change
391 the maximum packet size. Problems with the default value have been
392 reported when sending certificates or certificate chains. The default
刘洪青6266f992017-05-15 21:21:03 +0800393 value is 8192. If set to less than 8192 then the setting will ignored and
394 the default value of 8192 used.</p>
395 </td></tr><tr><td align="left" valign="center"><code class="attributeName">processorCache</code></td><td align="left" valign="center">
396 <p>The protocol handler caches Processor objects to speed up performance.
397 This setting dictates how many of these objects get cached.
398 <code>-1</code> means unlimited, default is <code>200</code>. If not using
399 Servlet 3.0 asynchronous processing, a good default is to use the same as
400 the maxThreads setting. If using Servlet 3.0 asynchronous processing, a
401 good default is to use the larger of maxThreads and the maximum number of
402 expected concurrent requests (synchronous and asynchronous).</p>
403 </td></tr><tr><td align="left" valign="center"><code class="attributeName">requiredSecret</code></td><td align="left" valign="center">
Hongqing Liufd5ee812014-05-10 16:32:51 +0800404 <p>Only requests from workers with this secret keyword will be accepted.
405 </p>
刘洪青6266f992017-05-15 21:21:03 +0800406 </td></tr><tr><td align="left" valign="center"><code class="attributeName">tcpNoDelay</code></td><td align="left" valign="center">
Hongqing Liufd5ee812014-05-10 16:32:51 +0800407 <p>If set to <code>true</code>, the TCP_NO_DELAY option will be
408 set on the server socket, which improves performance under most
409 circumstances. This is set to <code>true</code> by default.</p>
刘洪青6266f992017-05-15 21:21:03 +0800410 </td></tr><tr><td align="left" valign="center"><code class="attributeName">threadPriority</code></td><td align="left" valign="center">
411 <p>The priority of the request processing threads within the JVM.
412 The default value is <code>5</code> (the value of the
413 <code>java.lang.Thread.NORM_PRIORITY</code> constant). See the JavaDoc
414 for the <code>java.lang.Thread</code> class for more details on what
415 this priority means.If an executor is associated
416 with this connector, this attribute is ignored as the connector will
417 execute tasks using the executor rather than an internal thread pool. Note
418 that if an executor is configured any value set for this attribute will be
419 recorded correctly but it will be reported (e.g. via JMX) as
420 <code>-1</code> to make clear that it is not used.</p>
421 </td></tr><tr><td align="left" valign="center"><code class="attributeName">tomcatAuthentication</code></td><td align="left" valign="center">
422 <p>If set to <code>true</code>, the authentication will be done in Tomcat.
Hongqing Liufd5ee812014-05-10 16:32:51 +0800423 Otherwise, the authenticated principal will be propagated from the native
刘洪青6266f992017-05-15 21:21:03 +0800424 webserver and used for authorization in Tomcat. Note that this principal
425 will have no roles associated with it.
426 The default value is <code>true</code>. If
427 <code>tomcatAuthorization</code> is set to <code>true</code> this
428 attribute has no effect.</p>
429 </td></tr><tr><td align="left" valign="center"><code class="attributeName">tomcatAuthorization</code></td><td align="left" valign="center">
430 <p>If set to <code>true</code>, the authenticated principal will be
431 propagated from the native webserver and considered already authenticated
432 in Tomcat. If the web application has one or more security constraints,
433 authorization will then be performed by Tomcat and roles assigned to the
434 authenticated principal. If the appropriate Tomcat Realm for the request
435 does not recognise the provided user name, a Principal will be still be
436 created but it will have no roles. The default value is
437 <code>false</code>.</p>
438 </td></tr></table>
439
440 </blockquote></td></tr></table>
441
442 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Java TCP socket attributes"><!--()--></a><a name="Java_TCP_socket_attributes"><strong>Java TCP socket attributes</strong></a></font></td></tr><tr><td><blockquote>
443
444 <p>The BIO and NIO implementation support the following Java TCP socket
445 attributes in addition to the common Connector and HTTP attributes listed
446 above.</p>
447
448 <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">socket.rxBufSize</code></td><td align="left" valign="center">
449 <p>(int)The socket receive buffer (SO_RCVBUF) size in bytes. JVM default
450 used if not set.</p>
451 </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.txBufSize</code></td><td align="left" valign="center">
452 <p>(int)The socket send buffer (SO_SNDBUF) size in bytes. JVM default
453 used if not set.</p>
454 </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.tcpNoDelay</code></td><td align="left" valign="center">
455 <p>(bool)This is equivalent to standard attribute
456 <strong>tcpNoDelay</strong>.</p>
457 </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.soKeepAlive</code></td><td align="left" valign="center">
458 <p>(bool)Boolean value for the socket's keep alive setting
459 (SO_KEEPALIVE). JVM default used if not set.</p>
460 </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.ooBInline</code></td><td align="left" valign="center">
461 <p>(bool)Boolean value for the socket OOBINLINE setting. JVM default
462 used if not set.</p>
463 </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.soReuseAddress</code></td><td align="left" valign="center">
464 <p>(bool)Boolean value for the sockets reuse address option
465 (SO_REUSEADDR). JVM default used if not set.</p>
466 </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.soLingerOn</code></td><td align="left" valign="center">
467 <p>(bool)Boolean value for the sockets so linger option (SO_LINGER).
468 A value for the standard attribute <strong>connectionLinger</strong>
469 that is &gt;=0 is equivalent to setting this to <code>true</code>.
470 A value for the standard attribute <strong>connectionLinger</strong>
471 that is &lt;0 is equivalent to setting this to <code>false</code>.
472 Both this attribute and <code>soLingerTime</code> must be set else the
473 JVM defaults will be used for both.</p>
474 </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.soLingerTime</code></td><td align="left" valign="center">
475 <p>(int)Value in seconds for the sockets so linger option (SO_LINGER).
476 This is equivalent to standard attribute
477 <strong>connectionLinger</strong>.
478 Both this attribute and <code>soLingerOn</code> must be set else the
479 JVM defaults will be used for both.</p>
480 </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.soTimeout</code></td><td align="left" valign="center">
481 <p>This is equivalent to standard attribute
482 <strong>connectionTimeout</strong>.</p>
483 </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.performanceConnectionTime</code></td><td align="left" valign="center">
484 <p>(int)The first value for the performance settings. See
485 <a href="http://docs.oracle.com/javase/6/docs/api/java/net/Socket.html#setPerformancePreferences(int,%20int,%20int)">Socket Performance Options</a>
486 All three performance attributes must be set else the JVM defaults will
487 be used for all three.</p>
488 </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.performanceLatency</code></td><td align="left" valign="center">
489 <p>(int)The second value for the performance settings. See
490 <a href="http://docs.oracle.com/javase/6/docs/api/java/net/Socket.html#setPerformancePreferences(int,%20int,%20int)">Socket Performance Options</a>
491 All three performance attributes must be set else the JVM defaults will
492 be used for all three.</p>
493 </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.performanceBandwidth</code></td><td align="left" valign="center">
494 <p>(int)The third value for the performance settings. See
495 <a href="http://docs.oracle.com/javase/6/docs/api/java/net/Socket.html#setPerformancePreferences(int,%20int,%20int)">Socket Performance Options</a>
496 All three performance attributes must be set else the JVM defaults will
497 be used for all three.</p>
498 </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.unlockTimeout</code></td><td align="left" valign="center">
499 <p>(int) The timeout for a socket unlock. When a connector is stopped, it will try to release the acceptor thread by opening a connector to itself.
500 The default value is <code>250</code> and the value is in milliseconds</p>
501 </td></tr></table>
502 </blockquote></td></tr></table>
503
504 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="NIO specific configuration"><!--()--></a><a name="NIO_specific_configuration"><strong>NIO specific configuration</strong></a></font></td></tr><tr><td><blockquote>
505
506 <p>The following attributes are specific to the NIO connector.</p>
507
508 <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">socket.directBuffer</code></td><td align="left" valign="center">
509 <p>(bool)Boolean value, whether to use direct ByteBuffers or java mapped
510 ByteBuffers. Default is <code>false</code>.<br>
511 When you are using direct buffers, make sure you allocate the
512 appropriate amount of memory for the direct memory space. On Sun's JDK
513 that would be something like <code>-XX:MaxDirectMemorySize=256m</code>.
514 </p>
515 </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.appReadBufSize</code></td><td align="left" valign="center">
516 <p>(int)Each connection that is opened up in Tomcat get associated with
517 a read ByteBuffer. This attribute controls the size of this buffer. By
518 default this read buffer is sized at <code>8192</code> bytes. For lower
519 concurrency, you can increase this to buffer more data. For an extreme
520 amount of keep alive connections, decrease this number or increase your
521 heap size.</p>
522 </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.appWriteBufSize</code></td><td align="left" valign="center">
523 <p>(int)Each connection that is opened up in Tomcat get associated with
524 a write ByteBuffer. This attribute controls the size of this buffer. By
525 default this write buffer is sized at <code>8192</code> bytes. For low
526 concurrency you can increase this to buffer more response data. For an
527 extreme amount of keep alive connections, decrease this number or
528 increase your heap size.<br>
529 The default value here is pretty low, you should up it if you are not
530 dealing with tens of thousands concurrent connections.</p>
531 </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.bufferPool</code></td><td align="left" valign="center">
532 <p>(int)The NIO connector uses a class called NioChannel that holds
533 elements linked to a socket. To reduce garbage collection, the NIO
534 connector caches these channel objects. This value specifies the size of
535 this cache. The default value is <code>500</code>, and represents that
536 the cache will hold 500 NioChannel objects. Other values are
537 <code>-1</code> for unlimited cache and <code>0</code> for no cache.</p>
538 </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.bufferPoolSize</code></td><td align="left" valign="center">
539 <p>(int)The NioChannel pool can also be size based, not used object
540 based. The size is calculated as follows:<br>
541 NioChannel
542 <code>buffer size = read buffer size + write buffer size</code><br>
543 SecureNioChannel <code>buffer size = application read buffer size +
544 application write buffer size + network read buffer size +
545 network write buffer size</code><br>
546 The value is in bytes, the default value is <code>1024*1024*100</code>
547 (100MB).</p>
548 </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.processorCache</code></td><td align="left" valign="center">
549 <p>(int)Tomcat will cache SocketProcessor objects to reduce garbage
550 collection. The integer value specifies how many objects to keep in the
551 cache at most. The default is <code>500</code>. Other values are
552 <code>-1</code> for unlimited cache and <code>0</code> for no cache.</p>
553 </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.keyCache</code></td><td align="left" valign="center">
554 <p>(int)Tomcat will cache KeyAttachment objects to reduce garbage
555 collection. The integer value specifies how many objects to keep in the
556 cache at most. The default is <code>500</code>. Other values are
557 <code>-1</code> for unlimited cache and <code>0</code> for no cache.</p>
558 </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.eventCache</code></td><td align="left" valign="center">
559 <p>(int)Tomcat will cache PollerEvent objects to reduce garbage
560 collection. The integer value specifies how many objects to keep in the
561 cache at most. The default is <code>500</code>. Other values are
562 <code>-1</code> for unlimited cache and <code>0</code> for no cache.</p>
563 </td></tr><tr><td align="left" valign="center"><code class="attributeName">selectorPool.maxSelectors</code></td><td align="left" valign="center">
564 <p>(int)The max selectors to be used in the pool, to reduce selector
565 contention. Use this option when the command line
566 <code>org.apache.tomcat.util.net.NioSelectorShared</code> value is set
567 to false. Default value is <code>200</code>.</p>
568 </td></tr><tr><td align="left" valign="center"><code class="attributeName">selectorPool.maxSpareSelectors</code></td><td align="left" valign="center">
569 <p>(int)The max spare selectors to be used in the pool, to reduce
570 selector contention. When a selector is returned to the pool, the system
571 can decide to keep it or let it be GC'd. Use this option when the
572 command line <code>org.apache.tomcat.util.net.NioSelectorShared</code>
573 value is set to false. Default value is <code>-1</code> (unlimited).</p>
574 </td></tr><tr><td align="left" valign="center"><code class="attributeName">command-line-options</code></td><td align="left" valign="center">
575 <p>The following command line options are available for the NIO
576 connector:<br>
577 <code>-Dorg.apache.tomcat.util.net.NioSelectorShared=true|false</code>
578 - default is <code>true</code>. Set this value to <code>false</code> if you wish to
579 use a selector for each thread. When you set it to <code>false</code>, you can
580 control the size of the pool of selectors by using the
581 <strong>selectorPool.maxSelectors</strong> attribute.</p>
582 </td></tr></table>
583 </blockquote></td></tr></table>
584
585 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="APR/native specific configuration"><!--()--></a><a name="APR/native_specific_configuration"><strong>APR/native specific configuration</strong></a></font></td></tr><tr><td><blockquote>
586
587 <p>The APR/native implementation supports the following attributes in
588 addition to the common Connector and AJP attributes listed above.</p>
589
590 <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">pollTime</code></td><td align="left" valign="center">
591 <p>Duration of a poll call in microseconds. Lowering this value will
592 slightly decrease latency of connections being kept alive in some cases
593 , but will use more CPU as more poll calls are being made. The default
594 value is 2000 (2ms).
595 </p>
596 </td></tr><tr><td align="left" valign="center"><code class="attributeName">pollerSize</code></td><td align="left" valign="center">
597 <p>Amount of sockets that the poller responsible for polling kept alive
598 connections can hold at a given time. Extra connections will be closed
599 right away. The default value is 8192, corresponding to 8192 keep-alive
600 connections.</p>
Hongqing Liufd5ee812014-05-10 16:32:51 +0800601 </td></tr></table>
602
603 </blockquote></td></tr></table>
604
605</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>
606
607 <p>None at this time.</p>
608
刘洪青6266f992017-05-15 21:21:03 +0800609</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Special Features"><!--()--></a><a name="Special_Features"><strong>Special Features</strong></a></font></td></tr><tr><td><blockquote>
610
611 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Proxy Support"><!--()--></a><a name="Proxy_Support"><strong>Proxy Support</strong></a></font></td></tr><tr><td><blockquote>
612
613 <p>The <code>proxyName</code> and <code>proxyPort</code> attributes can
614 be used when Tomcat is run behind a proxy server. These attributes
615 modify the values returned to web applications that call the
616 <code>request.getServerName()</code> and <code>request.getServerPort()</code>
617 methods, which are often used to construct absolute URLs for redirects.
618 Without configuring these attributes, the values returned would reflect
619 the server name and port on which the connection from the proxy server
620 was received, rather than the server name and port to whom the client
621 directed the original request.</p>
622
623 <p>For more information, see the
624 <a href="../proxy-howto.html">Proxy Support HOW-TO</a>.</p>
625
626 </blockquote></td></tr></table>
627
628 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Connector Comparison"><!--()--></a><a name="Connector_Comparison"><strong>Connector Comparison</strong></a></font></td></tr><tr><td><blockquote>
629
630 <p>Below is a small chart that shows how the connectors differ.</p>
631 <div class="codeBox"><pre><code>
632 Java Blocking Connector Java Nio Blocking Connector APR/native Connector
633 BIO NIO APR
634 Classname AjpProtocol AjpNioProtocol AjpAprProtocol
635 Tomcat Version 3.x onwards 7.x onwards 5.5.x onwards
636 Support Polling NO YES YES
637 Polling Size N/A maxConnections maxConnections
638 Read Request Headers Blocking Blocking Blocking
639 Read Request Body Blocking Blocking Blocking
640 Write Response Blocking Blocking Blocking
641 Wait for next Request Blocking Non Blocking Non Blocking
642 Max Connections maxConnections maxConnections maxConnections
643
644 </code></pre></div>
645
646 </blockquote></td></tr></table>
647
648</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions
649 on improving documentation for Apache Tomcat.<br><br>
650 If you have trouble and need help, read
651 <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page
652 and ask your question on the tomcat-users
653 <a href="http://tomcat.apache.org/lists.html">mailing list</a>.
654 Do not ask such questions here. This is not a Q&amp;A section.<br><br>
655 The Apache Comments System is explained <a href="../comments.html">here</a>.
656 Comments may be removed by our moderators if they are either
657 implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--
658 var comments_shortname = 'tomcat';
659 var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/ajp.html';
660 (function(w, d) {
661 if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {
662 d.write('<div id="comments_thread"><\/div>');
663 var s = d.createElement('script');
664 s.type = 'text/javascript';
665 s.async = true;
666 s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
667 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
668 }
669 else {
670 d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');
671 }
672 })(window, document);
673 //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>
674 Copyright &copy; 1999-2017, Apache Software Foundation
Hongqing Liufd5ee812014-05-10 16:32:51 +0800675 </em></font></div></td></tr></table></body></html>