blob: 3b68d6ca410b1b311df2489b095428e65dfbd54e [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 Architecture (7.0.77) - Architecture Overview</title><meta name="author" content="Yoav Shapira"><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">Architecture 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>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="overview.html">Overview</a></li><li><a href="startup.html">Server Startup</a></li><li><a href="requestProcess.html">Request Process</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Architecture Overview</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>
Hongqing Liufd5ee812014-05-10 16:32:51 +080082<p>
83This page provides an overview of the Tomcat server architecture.
84</p>
85</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Terms"><strong>Terms</strong></a></font></td></tr><tr><td><blockquote>
86
87<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Server"><strong>Server</strong></a></font></td></tr><tr><td><blockquote>
88<p>
89In the Tomcat world, a
90<a href="../config/server.html">Server</a> represents the whole container.
刘洪青6266f992017-05-15 21:21:03 +080091Tomcat provides a default implementation of the
Hongqing Liufd5ee812014-05-10 16:32:51 +080092<a href="../api/org/apache/catalina/Server.html">Server interface</a>
93which is rarely customized by users.
94</p>
95</blockquote></td></tr></table>
96
97<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Service"><strong>Service</strong></a></font></td></tr><tr><td><blockquote>
98<p>
99A <a href="../config/service.html">Service</a> is an intermediate component
100which lives inside a Server and ties one or more Connectors to exactly one
101Engine. The Service element is rarely customized by users, as the default
102implementation is simple and sufficient:
103<a href="../api/org/apache/catalina/Service.html">Service interface</a>.
104</p>
105</blockquote></td></tr></table>
106
107<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Engine"><strong>Engine</strong></a></font></td></tr><tr><td><blockquote>
108<p>
109An
110<a href="../config/engine.html">Engine</a> represents request processing
111pipeline for a specific Service. As a Service may have multiple Connectors,
112the Engine receives and processes all requests from these connectors, handing
113the response back to the appropriate connector for transmission to the client.
114The <a href="../api/org/apache/catalina/Engine.html">Engine interface</a>
115may be implemented to supply custom Engines, though this is uncommon.
116</p>
117<p>
118Note that the Engine may be used for Tomcat server clustering via the
119jvmRoute parameter. Read the Clustering documentation for more information.
120</p>
121</blockquote></td></tr></table>
122
123<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Host"><strong>Host</strong></a></font></td></tr><tr><td><blockquote>
124<p>
125A <a href="../config/host.html">Host</a> is an association of a network name,
126e.g. www.yourcompany.com, to the Tomcat server. An Engine may contain
127multiple hosts, and the Host element also supports network aliases such as
128yourcompany.com and abc.yourcompany.com. Users rarely create custom
129<a href="../api/org/apache/catalina/Host.html">Hosts</a>
刘洪青6266f992017-05-15 21:21:03 +0800130because the
Hongqing Liufd5ee812014-05-10 16:32:51 +0800131<a href="../api/org/apache/catalina/core/StandardHost.html">StandardHost
132implementation</a> provides significant additional functionality.
133</p>
134</blockquote></td></tr></table>
135
136<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Connector"><strong>Connector</strong></a></font></td></tr><tr><td><blockquote>
137<p>
138A Connector handles communications with the client. There are multiple
139connectors available with Tomcat. These include the
140<a href="../config/http.html">HTTP connector</a> which is used for
刘洪青6266f992017-05-15 21:21:03 +0800141most HTTP traffic, especially when running Tomcat as a standalone server,
Hongqing Liufd5ee812014-05-10 16:32:51 +0800142and the <a href="../config/ajp.html">AJP connector</a> which implements
刘洪青6266f992017-05-15 21:21:03 +0800143the AJP protocol used when connecting Tomcat to a web server such as
Hongqing Liufd5ee812014-05-10 16:32:51 +0800144Apache HTTPD server. Creating a customized connector is a significant
145effort.
146</p>
147</blockquote></td></tr></table>
148
149<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Context"><strong>Context</strong></a></font></td></tr><tr><td><blockquote>
150<p>
151A
152<a href="../config/context.html">Context</a>
153represents a web application. A Host may contain multiple
154contexts, each with a unique path. The
155<a href="../api/org/apache/catalina/Context.html">Context
156interface</a> may be implemented to create custom Contexts, but
157this is rarely the case because the
158<a href="../api/org/apache/catalina/core/StandardContext.html">
159StandardContext</a> provides significant additional functionality.
160</p>
161</blockquote></td></tr></table>
162</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Comments"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote>
163<p>
164Tomcat is designed to be a fast and efficient implementation of the
165Servlet Specification. Tomcat came about as the reference implementation
166of this specification, and has remained rigorous in adhering to the
167specification. At the same time, significant attention has been paid
168to Tomcat's performance and it is now on par with other servlet containers,
169including commercial ones.
170</p>
171<p>
172In recent releases of Tomcat, mostly starting with Tomcat 5,
173we have begun efforts to make more aspects of Tomcat manageable via
174JMX. In addition, the Manager and Admin webapps have been greatly
175enhanced and improved. Manageability is a primary area of concern
176for us as the product matures and the specification becomes more
177stable.
178</p>
刘洪青6266f992017-05-15 21:21:03 +0800179</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
180 on improving documentation for Apache Tomcat.<br><br>
181 If you have trouble and need help, read
182 <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page
183 and ask your question on the tomcat-users
184 <a href="http://tomcat.apache.org/lists.html">mailing list</a>.
185 Do not ask such questions here. This is not a Q&amp;A section.<br><br>
186 The Apache Comments System is explained <a href="../comments.html">here</a>.
187 Comments may be removed by our moderators if they are either
188 implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--
189 var comments_shortname = 'tomcat';
190 var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/architecture/overview.html';
191 (function(w, d) {
192 if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {
193 d.write('<div id="comments_thread"><\/div>');
194 var s = d.createElement('script');
195 s.type = 'text/javascript';
196 s.async = true;
197 s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
198 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
199 }
200 else {
201 d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');
202 }
203 })(window, document);
204 //--><!]]></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>
205 Copyright &copy; 1999-2017, Apache Software Foundation
Hongqing Liufd5ee812014-05-10 16:32:51 +0800206 </em></font></div></td></tr></table></body></html>