1 <?xml version='1.0' encoding='UTF-8' ?>
2 <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="./style/manual.en.xsl"?>
4 <!-- $LastChangedRevision$ -->
7 Copyright 2004-2005 The Apache Software Foundation or its licensors, as
10 Licensed under the Apache License, Version 2.0 (the "License");
11 you may not use this file except in compliance with the License.
12 You may obtain a copy of the License at
14 http://www.apache.org/licenses/LICENSE-2.0
16 Unless required by applicable law or agreed to in writing, software
17 distributed under the License is distributed on an "AS IS" BASIS,
18 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 See the License for the specific language governing permissions and
20 limitations under the License.
23 <manualpage metafile="new_features_2_2.xml.meta">
25 <title>Overview of new features in Apache 2.2</title>
28 <p>This document describes some of the major changes between the
29 2.0 and 2.2 versions of the Apache HTTP Server. For new features since
30 version 1.3, see the <a href="new_features_2_0.html">2.0 new features</a>
35 <title>Core Enhancements</title>
39 <dd>The bundled authentication and authorization modules have
40 been refactored. There is a new authentication backend provider
41 scheme which greatly eases the construction of new authentication
45 <dd><module>mod_cache</module>, <module>mod_disk_cache</module>, and
46 <module>mod_mem_cache</module> have undergone a lot of changes
47 are now considered production-quality. <program>htcacheclean</program>
48 has been introduced to cleanup <module>mod_disk_cache</module>
51 <dt>Configuration</dt>
52 <dd>The default configuration layout has been simplified and
53 modularised. Configuration snippets which assist with enabling
54 commonly used features are now bundled and easily included in the
55 main server configuration.</dd>
57 <dt>Graceful stop</dt>
58 <dd>The <module>prefork</module>, <module>worker</module> and
59 <module>event</module> MPMs now allow <program>httpd</program>
60 to be shutdown gracefully via the
61 <a href="stopping.html#gracefulstop"><code>graceful-stop</code></a>
62 signal. The <directive
63 module="mpm_common">GracefulShutdownTimeout</directive> directive
64 has been added to specify an optional timeout, after which
65 <program>httpd</program> will terminate regardless of the status
66 of any requests being served.</dd>
69 <dd>The new <module>mod_proxy_balancer</module> module provides
70 load balancing services for <module>mod_proxy</module>.
71 The new <module>mod_proxy_ajp</module> module adds support for the
72 <code>Apache JServ Protocol version 1.3</code> used by
73 <a href="http://jakarta.apache.org/tomcat/">Apache Tomcat</a>.</dd>
75 <dt>Regular Expression Library Updated</dt>
76 <dd>Version 5.0 of the
77 <a href="http://www.pcre.org/">Perl Compatible Regular Expression
78 Library</a> (PCRE) is now included. <program>httpd</program> can be
79 configured to use a system installation of PCRE by passing the
80 <code>--with-pcre</code> flag to configure.</dd>
82 <dt>Smart Filtering</dt>
83 <dd><module>mod_filter</module> introduces dynamic configuration
84 to the output filter chain. It enables filters to be conditionally
85 inserted, based on any Request or Response header or environment
86 variable, and dispenses with the more problematic dependencies and
87 ordering problems in the 2.0 architecture.</dd>
89 <dt>Large File Support</dt>
91 <dd>httpd is now built with support for files larger than 2Gb on
92 modern 32-bit Unix systems. Support for handling >2Gb request
93 bodies has also been added.</dd>
96 <dd>The <module>event</module> MPM uses a seperate thread to handle
97 Keep Alive requests and accepting connections. Keep Alive requests
98 have traditionally required httpd to dedicate a worker to handle it.
99 This dedicated worker could not be used again until the Keep Alive
100 timeout was reached.</dd>
102 <dt>SQL Database Support</dt>
103 <dd><module>mod_dbd</module>, together with the apr_dbd framework,
104 brings direct SQL support to modules that need it. Supports
105 connection pooling in threaded MPMs.</dd>
110 <section id="module">
111 <title>Module Enhancements</title>
113 <dt><module>mod_authnz_ldap</module></dt>
114 <dd>This module is a port of the 2.0
115 <code>mod_auth_ldap</code> module to the 2.2 <code>Authn/Authz</code>
116 framework. New features include using LDAP attribute values and
117 complicated search filters in the
118 <directive module="core">Require</directive> directive.</dd>
120 <dt><module>mod_info</module></dt>
121 <dd>Added a new <code>?config</code> argument which will show
122 the configuration directives as parsed by Apache, including
123 their file name and line number. The module also
124 shows the order of all request hooks and additional
125 build information, similar to <code>httpd -V</code>.</dd>
127 <dt><module>mod_ssl</module></dt>
128 <!-- Need Info on SSLEngine Support? -->
129 <dd>Added a support for
130 <a href="http://www.ietf.org/rfc/rfc2817.txt">RFC 2817</a>, which
131 allows connections to upgrade from clear text to TLS encryption.</dd>
135 <section id="programs">
136 <title>Program Enhancements</title>
138 <dt><program>httpd</program></dt>
139 <dd>A new command line option <code>-M</code> has been added that
140 lists all modules that are loaded based on the current
141 configuration. Unlike the <code>-l</code> option, this list
142 includes DSOs loaded via <module>mod_so</module>.</dd>
146 <section id="developer">
147 <title>Module Developer Changes</title>
149 <dt><glossary>APR</glossary> 1.0 API</dt>
151 <dd>Apache 2.2 uses the APR 1.0 API. All deprecated functions and
152 symbols have been removed from <code>APR</code> and
153 <code>APR-Util</code>. For details, see the
154 <a href="http://apr.apache.org/">APR Website</a>.</dd>
156 <dt>Connection Error Logging</dt>
158 <dd>A new function, <code>ap_log_cerror</code> has been added to log
159 errors that occure with the client's connection. When logged,
160 the message includes the client IP address.</dd>
162 <dt>Test Configuration Hook Added</dt>
164 <dd>A new hook, <code>test_config</code> has been added to aid
165 modules that want to execute special code only when the user passes
166 <code>-t</code> to <program>httpd</program>.</dd>
168 <dt>Set Threaded MPM's Stacksize</dt>
170 <dd>A new directive, <code>ThreadStackSize</code> has been added to
171 set the stack size on all threaded MPMs. This is required
172 for some third-party modules on platforms with small default
173 thread stack size.</dd>
175 <dt>Protocol handling for output filters</dt>
177 <dd>In the past, every filter has been responsible for ensuring
178 that it generates the correct response headers where it affects
179 them. Filters can now delegate common protocol management to
180 <module>mod_filter</module>, using the
181 <code>ap_register_output_filter_protocol</code> or
182 <code>ap_filter_protocol</code> calls.</dd>
184 <dt>Monitor hook added</dt>
185 <dd>Monitor hook enables modules to run regular/scheduled jobs
186 in the parent (root) process.</dd>
188 <dt>Regular expression API changes</dt>
190 <dd>The <code>pcreposix.h</code> header is no longer available;
191 it is replaced by the new <code>ap_regex.h</code> header. The
192 POSIX.2 <code>regex.h</code> implementation exposed by the old
193 header is now available under the <code>ap_</code> namespace
194 from <code>ap_regex.h</code>. Calls to <code>regcomp</code>,
195 <code>regexec</code> and so on can be replaced by calls to
196 <code>ap_regcomp</code>, <code>ap_regcomp</code>.</dd>
198 <dt>DBD Framework (SQL Database API)</dt>
200 <dd><p>With Apache 1.x and 2.0, modules requiring an SQL backend
201 had to take responsibility for managing it themselves. Apart
202 from reinventing the wheel, this can be very inefficient, for
203 example when several modules each maintain their own connections.</p>
204 <p>Apache 2.1 and up provides the <code>ap_dbd</code> API for
205 managing database connections (including optimised strategies
206 for threaded and unthreaded MPMs), while APR 1.2 and up provides
207 the <code>apr_dbd</code> API for interacting with the database.</p>
208 <p>New modules SHOULD now use these APIs for all SQL database
209 operations. Existing applications SHOULD be upgraded to use it
210 where feasible, either transparently or as a recommended option
211 to their users.</p></dd>